2009-10-12 6 views
0

J'ai une file d'attente configurée dans le Rational Application Developer for WebSphere, en utilisant un « V5 fournisseur de messagerie par défaut » et un Websphere6.1Accès à une file d'attente à partir du code autonome

J'essaie maintenant d'accéder à l'aide d'une application autonome (JUnit Test), afin de mettre des messages dedans. J'utilise actuellement le code suivant:

 Hashtable env = new Hashtable(); 
     env.put(Context.INITIAL_CONTEXT_FACTORY, 
       "com.ibm.websphere.naming.WsnInitialContextFactory"); 
     env.put(Context.PROVIDER_URL, "corbaloc::localhost:2809"); 
     InitialContext ctx = new InitialContext(env); 

     javax.jms.Queue queue = (javax.jms.Queue) ctx.lookup("Topic"); 

Sur la dernière ligne, je reçois l'exception suivante:

javax.naming.NamingException: The JNDI operation "lookupExt"on the context "vwagwolot0awNode01Cell/nodes/vwagwolot0awNode01/servers/server1" with the name "Topic" failed. Please get the root cause Throwable contained in this NamingException for more information. Root exception is java.lang.NoSuchMethodError: com.ibm.ejs.ras.TraceComponent: method isAnyTracingEnabled()Z not found 
    at com.ibm.websphere.pmi.reqmetrics.PmiReqMetrics.register(PmiReqMetrics.java:949) 
    at com.ibm.websphere.pmi.reqmetrics.PmiReqMetrics.<clinit>(PmiReqMetrics.java:273) 
    at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1505) 
    at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1358) 
    at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:172) 
    at javax.naming.InitialContext.lookup(InitialContext.java:361) 
    at de.volkswagen.oracle.provisioning.util.test.QueueTest.testQueue(QueueTest.java:33) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60) 
    at java.lang.reflect.Method.invoke(Method.java:391) 
    at junit.framework.TestCase.runTest(TestCase.java:164) 
    at junit.framework.TestCase.runBare(TestCase.java:130) 
    at junit.framework.TestResult$1.protect(TestResult.java:106) 
    at junit.framework.TestResult.runProtected(TestResult.java:124) 
    at junit.framework.TestResult.run(TestResult.java:109) 
    at junit.framework.TestCase.run(TestCase.java:120) 
    at junit.framework.TestSuite.runTest(TestSuite.java:230) 
    at junit.framework.TestSuite.run(TestSuite.java:225) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 
root cause: 
java.lang.NoSuchMethodError: com.ibm.ejs.ras.TraceComponent: method isAnyTracingEnabled()Z not found 
    at com.ibm.websphere.pmi.reqmetrics.PmiReqMetrics.register(PmiReqMetrics.java:949) 
    at com.ibm.websphere.pmi.reqmetrics.PmiReqMetrics.<clinit>(PmiReqMetrics.java:273) 
    at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1505) 
    at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1358) 
    at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:172) 
    at javax.naming.InitialContext.lookup(InitialContext.java:361) 
    at <package name here>.QueueTest.testQueue(QueueTest.java:33) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60) 
    at java.lang.reflect.Method.invoke(Method.java:391) 
    at junit.framework.TestCase.runTest(TestCase.java:164) 
    at junit.framework.TestCase.runBare(TestCase.java:130) 
    at junit.framework.TestResult$1.protect(TestResult.java:106) 
    at junit.framework.TestResult.runProtected(TestResult.java:124) 
    at junit.framework.TestResult.run(TestResult.java:109) 
    at junit.framework.TestCase.run(TestCase.java:120) 
    at junit.framework.TestSuite.runTest(TestSuite.java:230) 
    at junit.framework.TestSuite.run(TestSuite.java:225) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 

Tout conseils, ce que je peux faire pour résoudre ce problème? Pour aller aussi loin, j'ai ajouté ws_runtime.jar dans le classpath, que j'ai trouvé quelque part dans l'installation de RAD.

Répondre

1

Vous pouvez vérifier quels fichiers JAR vous avez dans le chemin de classe. Un regard rapide indique une discordance quelque part. Cette ligne:

java.lang.NoSuchMethodError: com.ibm.ejs.ras.TraceComponent: method isAnyTracingEnabled()Z not found 

vous dit que la méthode com.ibm.websphere.pmi.reqmetrics.PmiReqMetrics.register tente d'appeler la méthode isAnyTracingElementEnabled sur TraceComponent, mais TraceComponent n'a pas cette méthode. Je devine que le JAR qui a TraceComponent est le mauvais.

+0

Je suis d'accord. Et je pense que c'est ws_runtime.jar bien que, maintenant que j'écris ceci, je suppose que je devrais vérifier cela. Mais la question est: où puis-je obtenir la bonne version? –

+0

Je ne peux pas vous aider, je n'utilise pas l'application en question – tddmonkey

+0

deux problèmes à résoudre: J'ai eu le Testcode dans le même projet que l'EJB à tester. Cela a causé le problème décrit, car avec l'EJB est venu de nombreuses entrées de chemin de classe que je ne voulais pas pour le test. Pour la bibliothèque correcte, RAD propose une bibliothèque d'exécution de serveur, que nous avons ajoutée au chemin de génération, qui a au moins résolu ce problème. –

Questions connexes