JMS Sun App 8.1 JNDI Lookup

Pagina: 1
Acties:

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Ik krijg bij het uitvoeren van de lookup van mijn TopicConnectionFactory een vreemde foutmelding waarbij ik niet weet waar ik het moet zoeken.

Het gaat om client / server communicatie m.b.v. JMS.
Mijn JNDI properties zijn als volgt:

java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory
java.naming.provider.url=iiop://localhost:3710
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl

(poort klopt, deze heb ik gecontrolleerd tegen de domain.xml)

Mijn code is als volgt:

code:
1
2
InitialContext initialContext = new InitialContext();
TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory)initialContext.lookup("jms/adressbookservicefactory");


Waarbij de tweede regel de volgende fout geeft:

[Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]

Ik heb naar mijn idee de instellingen in de application server goed staan.

Mijn vraag: Weet iemand wat deze fout inhoud en waar ik het moet zoeken?
Op internet komt deze melding veelvuldig voor, alleen heeft het hier vaak geen relatie tot JMS.


Of nog liever: heeft iemand het wel werkend en kan hij/zei zijn domain.xml plaatsen (terug te vinden in de config map van je domein) en een stukje van de code om de JNDI lookup te doen.


Instelling uit de domain.xml is als volgt:

<connector-resource enabled="true" jndi-name="jms/adressbookservicefactory" object-type="user" pool-name="jms/adressbookservicefactory">
<description>Topic connection factory for the AdressBookService.</description>
</connector-resource>

<connector-resource enabled="true" jndi-name="jms/adressbookservicefactory" object-type="user" pool-name="jms/adressbookservicefactory">
<description>Topic connection factory for the AdressBookService.</description>
</connector-resource>

<connector-connection-pool connection-definition-name="javax.jms.TopicConnectionFactory" fail-all-connections="false" idle-timeout-in-seconds="300" max-pool-size="32" max-wait-time-in-millis="60000" name="jms/adressbookservicefactory" pool-resize-quantity="2" resource-adapter-name="jmsra" steady-pool-size="8" transaction-support="XATransaction">
<property name="ReconnectEnabled" value="true"/>
<property name="AddressListBehavior" value="RANDOM"/>
<property name="ReconnectInterval" value="60000"/>
<property name="AddressList" value="mq://localhost:7686/,"/>
<property name="ReconnectAttempts" value="3"/>
<property name="AddressListIterations" value="3"/>
</connector-connection-pool>

<resource-ref enabled="true" ref="jms/adressbookservicetopic"/>
<resource-ref enabled="true" ref="jms/adressbookservicefactory"/>

[ Voor 12% gewijzigd door ronaldmathies op 25-02-2006 01:33 ]

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Ik ben inmiddels een stap verder, er zat een fout in mijn instellingen van de application server (ik was vergeten de "physical destination" aan te maken.

Echter krijg ik nogsteeds de melding:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
    at com.sun.jndi.cosnaming.ExceptionMapper.mapException(ExceptionMapper.java:44)
    at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:453)
    at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:492)
    at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:470)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at nl.caesar.adressbook.j2se.Main.setupJMSSubscriber(Main.java:180)
    at nl.caesar.adressbook.j2se.Main.initialise(Main.java:129)
    at nl.caesar.adressbook.j2se.Main.<init>(Main.java:125)
    at nl.caesar.adressbook.j2se.Main.main(Main.java:348)
Caused by: org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
    at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read(NotFoundHelper.java:72)
    at org.omg.CosNaming._NamingContextExtStub.resolve(_NamingContextExtStub.java:406)
    at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:440)
    ... 7 more


Mijn code is als volgt:

code:
1
2
3
4
5
6
7
8
9
Properties props = new Properties();
props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
props.put("java.naming.provider.url", "iiop://localhost:3710");

InitialContext initialContext = new InitialContext(props);
TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory)initialContext.lookup("jms/adressbookservicefactory");
topicConnection = topicConnectionFactory.createTopicConnection();
topic = (Topic) initialContext.lookup("jms/adressbookservicetopic");
topicSession = topicConnection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);


De JMS gebruiken vanuit een EJB gaat wel goed. Alleen vanuit een client applicatie gaat het dus niet goed.

Mijn classpath bevat de volgende extra libraries voor de Sun Application Server:
appserv-rt.jar, imqjmsra.jar

Verder heb ik GEEN JVM argumenten opgegeven.

wie weet wat hier fout gaat?
Klopt dit:
code:
1
2
props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
props.put("java.naming.provider.url", "iiop://localhost:3710");


En wat is eigenlijk de default port van een standaard server installatie (8.1) en waar kan ik dit eventueel terug vinden in de Administration console?

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Verwijderd

Ben jij hier nog uitgekomen?

Ik loop namelijk tegen exact hetzelfde probleem aan (alleen op SJApplication Server 9 met Java EE 5).

Ik heb (natuurlijk) het bovenstaande geprobeerd (poort 3700 is trouwens de standaard poort bij mijn installatie).

Hier naast heb ik ook de pogingen zoals in deze threads staan gevolgd, maar met hetzelfde effect:

http://docs.sun.com/source/819-0079/dgacc.html
http://docs.sun.com/source/819-0079/dgjndi.html
http://forum.java.sun.com/thread.jspa?messageID=4130854
http://forum.java.sun.com...=701670&messageID=4116983

Jammer genoeg is de documentatie van Sun nogal spaars ("stel jndi.properties in zoals het moet") en kom ik met mijn gegoogle ook niet veel verder dan het bovenstaande.

edit:

Ik ben er ondertussen uit, hierbij mijn oplossing, mocht iemand het nog nodig hebben:

Configuratie InitialContext:
Java:
1
2
3
4
5
6
7
Hashtable props = new Hashtable();
props.put("javax.rmi.CORBA.UtilClass","com.sun.corba.ee.impl.javax.rmi.CORBA.Util");
props.put("org.omg.CORBA.ORBClass","com.sun.corba.ee.impl.orb.ORBImpl");
props.put("org.omg.CORBA.ORBSingletonClass","com.sun.corba.ee.impl.orb.ORBSingleton");
props.put("java.naming.factory.initial","com.sun.appserv.naming.S1ASCtxFactory");
props.put("java.naming.provider.url","iiop://IP_ADDRESS:PORT");
InitialContext context = new InitialContext(props);

De standaard poort voor JSAS 9.0 is 3700.

Lookup als volgd:
Java:
1
RemoteInterface remote = (RemoteInterface)context.lookup(RemoteInterface.class.getName());

Zoals in de tutorial staat.

Hiervoor zijn de volgende libs nodig uit de 'lib' directory van de ApplicationServer installatie:
  • javaee.jar
  • appserv-deployment-client.jar
  • appserv-ext.jar (niet zeker, waarschijnlijk wel)
  • appserv-rt.jar (niet zeker, waarschijnlijk wel)
Dit is getest en werkt met een Java EE 5 Stateless Session Bean op de Sun Java Application Server 9.0 (zoals meegeleverd met de Java EE 5 Netbeans preview).

[ Voor 48% gewijzigd door Verwijderd op 16-05-2006 14:58 . Reden: Oplossing gevonden ]