首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Weblogic找不到具有用于绑定的“正确”JNDI名称的资源适配器

Weblogic找不到具有用于绑定的“正确”JNDI名称的资源适配器
EN

Stack Overflow用户
提问于 2012-04-21 05:25:50
回答 1查看 5.9K关注 0票数 5

我正在尝试将我的消息驱动bean与WebLogic10.3.5上的Oracle JCA file适配器(包含在SOA套件中)绑定。这样当有任何.txt文件被移动到特定目录时,我的MDB就会收到通知。

启动支持SOA特性的WebLogic域之后,会自动部署文件适配器。在Weblogic控制台上,我可以看到file适配器被部署为"Resource Adapter",健康状态为"OK",状态为"Active",如下所示:

我还运行了file适配器的测试,它们都通过了测试:

因此,我认为文件适配器部署正确,应该可以正常工作。

然后,我的消息驱动bean代码如下所示:

代码语言:javascript
复制
import java.util.logging.Logger;
import javax.ejb.MessageDriven;
import javax.resource.ResourceException;
import javax.resource.cci.MessageListener;
import javax.resource.cci.Record;

@MessageDriven
public class FileAdapterClientMDB implements MessageListener {

    private Logger logger = Logger.getLogger(FileAdapterClientMDB.class.getName());

    public FileAdapterClientMDB() {

    }

    @Override
    public Record onMessage(Record record) throws ResourceException {
        logger.info("Received record: " + record);
        return record;
    }
}

下面是我的ejb-jar.xml文件的内容:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0">
  <display-name>MockEJB</display-name>
  <enterprise-beans>
    <message-driven>
      <description>EMessage Driven Bean as File Adapter Client</description>
      <display-name>FileAdapterClientMDB</display-name>
      <ejb-name>FileAdapterClientMDB</ejb-name>
      <ejb-class>com.test.FileAdapterClientMDB</ejb-class>
      <messaging-type>javax.resource.cci.MessageListener</messaging-type>
      <transaction-type>Container</transaction-type>
      <activation-config>
        <activation-config-property>
          <activation-config-property-name>physicalDirectory</activation-config-property-name>
          <activation-config-property-value>C:\dataDir</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
          <activation-config-property-name>deleteFile</activation-config-property-name>
          <activation-config-property-value>true</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
          <activation-config-property-name>pollingFrequency</activation-config-property-name>
          <activation-config-property-value>10</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
          <activation-config-property-name>includeFiles</activation-config-property-name>
          <activation-config-property-value>.*\.txt</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
          <activation-config-property-name>minimumAge</activation-config-property-name>
          <activation-config-property-value>0</activation-config-property-value>
        </activation-config-property>
      </activation-config>
    </message-driven>
  </enterprise-beans>
</ejb-jar>

和我的weblogic-ejb-jar.xml文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-ejb-jar xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-ejb-jar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://www.bea.com/ns/weblogic/weblogic-ejb-jar http://www.bea.com/ns/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd">
    <!--weblogic-version:10.3-->
    <wls:weblogic-enterprise-bean>
        <!--options:RESOURCE_ADAPTER_JNDI-->
        <wls:ejb-name>FileAdapterClientMDB</wls:ejb-name>
        <wls:message-driven-descriptor>
            <wls:resource-adapter-jndi-name>eis/FileAdapter</wls:resource-adapter-jndi-name>
        </wls:message-driven-descriptor>
        <wls:jndi-name>FileAdapterClientMDB</wls:jndi-name>
        <wls:local-jndi-name>FileAdapterClientMDB</wls:local-jndi-name>
    </wls:weblogic-enterprise-bean>
</wls:weblogic-ejb-jar>

在部署EAR项目时,我收到了这样的消息:

代码语言:javascript
复制
<20.4.2012 22:42:11 CEST> <Warning> <EJB> <BEA-010221> <The Message-Driven EJB: 
FileAdapterClientMDB is unable to bind to the JCA resource adapter: eis/FileAdapter. 
The Error was: No deployed ResourceAdapter with adapter JNDI name = 'eis/FileAdapter' was found.>

我不知道为什么Weblogic会抱怨这个,因为官方user guide of the adapter中提到了"eis/FileAdapter“JNDI名称。我也可以在Weblogic的JNDI树中看到它:

此外,当我在测试web服务中运行以下代码时:

代码语言:javascript
复制
try {
    final Context context = new InitialContext();
    final Object obj = context.lookup("eis/FileAdapter");
    System.out.println("eis/FileAdapter => " + obj);
} catch (NamingException e) {
    e.printStackTrace();
}

它打印出“JNDI /FileAdapter => oracle.tip.adapter.file.FileConnectionFactory@ff51dc",,这意味着名称是正确的!”

所以我的问题是,为什么Weblogic找不到具有“正确的”名称的资源适配器来进行绑定?,有人能给我一些解决方法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-29 22:23:12

只要你没有看到这个警告的重复,你就没有什么可担心的。它只是显示在部署MDB时的部署顺序中,它无法获得适配器。注意: MDB每隔5秒就会尝试连接一次,因此如果警告继续填满日志,则意味着MDB无法获取适配器,这意味着它不能工作,如果您只看到一次警告,则可以安全地忽略它,或者更改部署顺序,稍后再推送MDB。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10253774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档