2012-04-20 1 views
4

Я пытаюсь связать свой обработанный сообщением bean-компонент с файловым адаптером Oracle JCA (который входит в пакет SOA) в Weblogic 10.3.5. Так что мой MDB может получить уведомление, когда какой-либо файл .txt перемещается в конкретный каталог.Weblogic не смог найти ресурсный адаптер с «правильным» именем JNDI для привязки

После запуска домена веб-журнала с поддержкой SOA файловый адаптер автоматически развертывается. На Weblogic консоли можно увидеть адаптер файл развернут в качестве «адаптера ресурсов», здоровье «OK», состояние «Активный», как показано ниже:

Deployed File Adapter in Weblogic

Также я запускать тесты файл адаптера, и все они прошли:

enter image description here

Так что я думаю, что адаптер файл правильно развернут и должен быть функциональным.

Затем мое сообщение управляемый код боб выглядит следующим образом:

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; 
    } 
} 

Вот содержание моего -jar.xml EJB файла:

<?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 file:

<?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, я получил это сообщение:

<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 жаловаться на это, так как имя JNDI «эйс/FileAdapter» упоминается в официальном user guide of the adapter. Также я могу увидеть его в JNDI дерево WebLogic в:

enter image description here

Более того, когда я запускаю этот код в моем тестирования веб-сервиса:

try { 
    final Context context = new InitialContext(); 
    final Object obj = context.lookup("eis/FileAdapter"); 
    System.out.println("eis/FileAdapter => " + obj); 
} catch (NamingException e) { 
    e.printStackTrace(); 
} 

Он печатает "эйс/FileAdapter = > [email protected] ", что означает, что имя JNDI верное!

Так что мой вопрос: Почему Weblogic не смог найти адаптер ресурсов с «правильным» именем JNDI для привязки? Может ли кто-нибудь дать мне несколько идей о том, как его решить?

Спасибо в продвижении.

+0

Nitpick: Вы пытались изменить значение тега 'weblogic-ejb-jar.xml' на' eis.FileAdapter'? – Viccari

ответ

0

, пока вы не видите это предупреждение, повторяя, вам не о чем беспокоиться. Это просто показывает, что в порядке развертывания при развертывании MDB он не смог получить адаптер. Обратите внимание, что MDB продолжает пытаться подключаться каждые 5 секунд, поэтому, если предупреждение продолжает заполнять журнал, это означает, что MDB не смог заставить адаптер означать, что он не работает, если вы видели предупреждение только после того, как вы можете спокойно проигнорировать его или измените порядок развертывания и немного подтолкните MDB.