2012-01-08 68 views
0

我在本地和遠程服務器上有JMS隊列,當我嘗試通過在Eclipse中運行的程序連接它們時,它工作正常。如果我在可運行Jar文件中打包相同的程序,我會得到以下異常,並且我很難判斷出它爲什麼會被拋出。 我假設在請求JMS隊列連接的同時在Jar中應該採用不同的方式,請幫助。在運行Jars中連接JMS隊列

我使用JBOSS作爲中間件。

public void setupPTP() { 
    try { 
     Properties props = new Properties(); 
     props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); 
     props.setProperty("java.naming.provider.url","jnp://localhost:1099"); 
     props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); 

     /* 
     * This is where the Exception is getting thrown 
     */ 
     InitialContext iniCtx = new InitialContext(props); 

     Object tmp = iniCtx.lookup("java:/ConnectionFactory"); 
     QueueConnectionFactory qcf = (QueueConnectionFactory) tmp; 

     conn = qcf.createQueueConnection(); 
     que = (Queue) iniCtx.lookup(QueueSetup.getMessageQueue()); 
     session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE); 
     conn.start(); 
     log.info("### Queue Connection UP and STARTED"); 
    } catch (JMSException jmsException) { 
     log.error("!!! JMSException while setting up the Queue"); 
     jmsException.printStackTrace(); 
    } catch (NamingException namingException) { 
     log.error("!!! NamingException while setting up the Queue"); 
     namingException.printStackTrace(); 
    } 

javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.net.MalformedURLException: unknown protocol: rsrc] 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:707) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572) 
    at javax.naming.InitialContext.lookup(Unknown Source) 
    at org.jivesoftware.sparkimpl.plugin.heat.ProducerHeatClient.setupPTP(ProducerHeatClient.java:47) 
    at org.jivesoftware.sparkimpl.plugin.heat.ProducerHeatClient.<init>(ProducerHeatClient.java:31) 
    at org.jivesoftware.sparkimpl.plugin.heat.HeatPlugin.initialize(HeatPlugin.java:41) 
    at org.jivesoftware.spark.PluginManager$2.run(PluginManager.java:616) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$000(Unknown Source) 
    at java.awt.EventQueue$1.run(Unknown Source) 
    at java.awt.EventQueue$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

    Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 

    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.net.MalformedURLException: unknown protocol: rsrc 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:336) 
    at sun.rmi.transport.Transport$1.run(Transport.java:159) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) 
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) 
    at sun.rmi.server.UnicastRef.invoke(Unknown Source) 
    at org.jnp.server.NamingServer_Stub.lookup(Unknown Source) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:610) 
    ... 20 more 

Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 

java.net.MalformedURLException: unknown protocol: rsrc 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:293) 
    at sun.rmi.transport.Transport$1.run(Transport.java:159) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

Caused by: java.net.MalformedURLException: unknown protocol: rsrc 

at java.net.URL.<init>(URL.java:574) 
    at java.net.URL.<init>(URL.java:464) 
    at java.net.URL.<init>(URL.java:413) 
    at sun.rmi.server.LoaderHandler.pathToURLs(LoaderHandler.java:751) 
    at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:147) 
    at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620) 
    at org.jboss.system.JBossRMIClassLoader.loadClass(JBossRMIClassLoader.java:91) 
    at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247) 
    at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
    at javax.naming.CompoundName.readObject(CompoundName.java:554) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
    at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:290) 
    ... 9 more 

任何形式的幫助將不勝感激。

問候 Adofo

回答