2016-05-09 24 views
0

Wir haben eine federbasierte Anwendung, die nicht auf einem Weblogic 10.3-Container bereitgestellt werden kann. Nach der Bereitstellung versucht die Anwendung, zwei lokale JMS-Warteschlangen im JMS-Modul des Weblogic-Containers nachzuschlagen. Wenn die Bereitstellung erfolgt, sucht die Anwendung eine lokale Warteschlange, die nicht OK ist.Weblogic-Implementierung lokale Warteschlange kann nicht aufgelöst werden

Beide Warteschlangen sind genau gleich konfiguriert, außer dass ihre Namen unterschiedlich sind. Warum findet die Anwendung eine Warteschlange in Ordnung, aber nicht die andere?

Ich habe Warteschlangennamen JNDI-Namen mehrmals überprüft und ich kann keine Rechtschreibfehler oder ähnliches sehen.

Ich habe die Protokollierung aktiviert und sehe, dass die Verbindungsfactory, die für beide Warteschlangen verwendet wird, die gleiche ist. Die JMS-Quellkonfiguration ist für beide Warteschlangen identisch, aber eine findet die andere nicht.

Ich weiß nicht, was noch zu prüfen, um festzustellen, was das Problem sein könnte ... irgendwelche Ideen?

Dies ist der Fehler, den ich bekommen, wenn es nicht in der Weblogic JNDI Baum einer der Warteschlangen zu sehen:

Caused by: javax.naming.NameNotFoundException: Unable to resolve 'QUEUE_NAME'. Resolved ''; remaining name 'QUEUE_NAME' at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)

PS: Beide Warteschlangen die gleiche Subdeployment und gleiche Ziele konfiguriert haben.

---- bearbeitet Artefakts Spring-XML-Konfiguration hinzuzufügen Snippet unten ----

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:security="http://www.springframework.org/schema/security" 
    xmlns:lang="http://www.springframework.org/schema/lang" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd 
       http://www.springframework.org/schema/security 
       http://www.springframework.org/schema/security/spring-security-3.0.xsd 
       http://www.springframework.org/schema/lang 
       http://www.springframework.org/schema/lang/spring-lang-3.0.xsd"> 

    <context:component-scan base-package="com.company.service" /> 

    <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
     <property name="environment"> 
      <props> 
       <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop> 
      </props> 
     </property> 
    </bean> 

    <!-- this is the Message Driven POJO (MDP) --> 
    <bean id="messageListener" class="com.company.service.controller.ServiceJMSListener" /> 
    <!-- this is the message listener container --> 
    <bean id="jmsContainer" 
     class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
     <property name="connectionFactory" ref="queueConnectionFactory" /> 
     <property name="destination" ref="inboundQueue" /> 
     <property name="messageListener" ref="messageListener" /> 
     <property name="concurrentConsumers" value="1" /> 
    </bean> 
    <!-- JNDI Connection Factory --> 
    <bean id="queueConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiTemplate"> 
      <ref bean="jndiTemplate" /> 
     </property> 
     <property name="jndiName"> 
      <value>SERVICE_QCF</value> 
     </property> 
    </bean> 
    <!-- Queue to listen to --> 
    <bean id="inboundQueue" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiTemplate"> 
      <ref bean="jndiTemplate" /> 
     </property> 
     <property name="jndiName"> 
      <value>QUEUE_A</value> 
     </property> 
    </bean> 

    <bean id="outboundQueue" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiTemplate"> 
      <ref bean="jndiTemplate" /> 
     </property> 
     <property name="jndiName"> 
      <value>QUEUE_B</value> 
     </property> 
    </bean> 

    <bean id="queueTemplate" class="org.springframework.jms.core.JmsTemplate"> 
     <property name="connectionFactory"> 
      <ref bean="queueConnectionFactory" /> 
     </property> 
     <property name="destinationResolver"> 
      <ref bean="jmsDestinationResolver" /> 
     </property> 
    </bean> 

    <bean id="jmsDestinationResolver" 
     class="org.springframework.jms.support.destination.JndiDestinationResolver"> 
     <property name="jndiTemplate"> 
      <ref bean="jndiTemplate" /> 
     </property> 
     <property name="cache"> 
      <value>true</value> 
     </property> 
    </bean> 

</beans> 

Antwort

1

Können Sie einen Blick auf die JDNI Baum in Ihrem laufenden Server, wenn die Warteschlange erstellt einzuchecken oder nicht und an welchen jndi-Namen ist es gebunden? Verwenden Sie die Admin-Konsole für diesen Zweck.

+0

Die Warteschlangen befinden sich in einem JMS-Modul auf einem Weblogic-Server (Jms) getrennt vom Weblogic-Server (App), in dem das Artefakt nicht bereitgestellt werden kann. Der Weblogic Admin Server verwaltet sowohl den JMS als auch den App Weblogic Server. Jetzt kann ich über die Admin-Konsole zum JMS Weblogic Server gehen und seinen JNDI-Baum anzeigen. In der JNDI-Struktur kann ich beide Warteschlangen sehen, mit denen das Artefakt eine Verbindung herstellen will (Eine erfolgreich, die andere überhaupt nicht). Beide Warteschlangen in der JNDI-Struktur zeigen, dass die Binding-Namen der Warteschlangen genau wie die Warteschlangennamen selbst sind. Die Bereitstellung kann jedoch nur eine der Warteschlangen anzeigen. –

+0

Können Sie den in Ihrer Anwendung ausgeführten Code veröffentlichen, indem Sie versuchen, eine Verbindung zum jms-Server herzustellen. –

+0

Emmanuel, siehe Spring XML-Konfiguration im Hauptbeitrag hinzugefügt. –