Java 在可运行JAR中连接JMS队列
我在本地和远程服务器上都有JMS队列,当我试图通过运行在Eclipse中的程序连接它们时,它工作正常。如果我在runnable Jar文件中打包相同的程序,我会得到以下异常,我很难弄清楚为什么会抛出它。 我假设在Jar中请求JMS队列连接时应该采用不同的方式,请帮助 我正在使用JBOSS作为中间件Java 在可运行JAR中连接JMS队列,java,jakarta-ee,jboss,jms,executable-jar,Java,Jakarta Ee,Jboss,Jms,Executable Jar,我在本地和远程服务器上都有JMS队列,当我试图通过运行在Eclipse中的程序连接它们时,它工作正常。如果我在runnable Jar文件中打包相同的程序,我会得到以下异常,我很难弄清楚为什么会抛出它。 我假设在Jar中请求JMS队列连接时应该采用不同的方式,请帮助 我正在使用JBOSS作为中间件 public void setupPTP() { try { Properties props = new Properties(); props.setPro
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
public void setupPTP(){
试一试{
Properties props=新属性();
setProperty(“java.naming.factory.initial”、“org.jnp.interfaces.NamingContextFactory”);
setProperty(“java.naming.provider.url”jnp://localhost:1099");
setProperty(“java.naming.factory.url.pkgs”,“org.jboss.naming:org.jnp.interfaces”);
/*
*这就是引发异常的地方
*/
InitialContext iniCtx=新的InitialContext(道具);
对象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);
连接开始();
log.info(“####队列连接已启动”);
}捕获(JMSException JMSException){
log.error(!!!设置队列时发生JMSException”);
jmseception.printStackTrace();
}捕获(NamingException NamingException){
log.error(!!!设置队列时发生NamingException”);
namingException.printStackTrace();
}
javax.naming.CommunicationException[根异常为java.rmi.ServerException:服务器线程中发生RemoteException;嵌套异常为:
java.rmi.UnmarshallException:对参数进行解组时出错;嵌套异常为:
java.net.MalformedURLException:未知协议:rsrc]
位于org.jnp.interfaces.NamingContext.lookup(NamingContext.java:707)
位于org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
位于javax.naming.InitialContext.lookup(未知源)
位于org.jivesoftware.sparkimpl.plugin.heat.ProducerHeatClient.setupPTP(ProducerHeatClient.java:47)
位于org.jivesoftware.sparkimpl.plugin.heat.ProducerHeatClient.(ProducerHeatClient.java:31)
位于org.jivesoftware.sparkimpl.plugin.heat.HeatPlugin.initialize(HeatPlugin.java:41)
位于org.jivesoftware.spark.PluginManager$2.run(PluginManager.java:616)
在java.awt.event.InvocationEvent.dispatch(未知源)处
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$000(未知源)
在java.awt.EventQueue$1.run处(未知源)
在java.awt.EventQueue$1.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.AccessControlContext$1.doIntersectionPrivilege(未知源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)
原因:java.rmi.ServerException:服务器线程中发生RemoteException;嵌套异常为:
java.rmi.UnmarshallException:对参数进行解组时出错;嵌套异常为:
java.net.MalformedURLException:未知协议:rsrc
在sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:336)
在sun.rmi.transport.transport$1.run(transport.java:159)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.rmi.transport.transport.serviceCall(transport.java:155)
位于sun.rmi.transport.tcp.tcpttransport.handleMessages(tcpttransport.java:535)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run0(tcpttransport.java:790)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run(tcpttransport.java:649)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:662)
位于sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(未知源)
位于sun.rmi.transport.StreamRemoteCall.executeCall(未知源)
位于sun.rmi.server.UnicastRef.invoke(未知源)
位于org.jnp.server.NamingServer_Stub.lookup(未知源)
位于org.jnp.interfaces.NamingContext.lookup(NamingContext.java:610)
…还有20个
原因:java.rmi.unmarshallException:对参数进行解组时出错;嵌套异常为:
java.net.MalformedURLException:未知协议:rsrc
位于sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:293)
在sun.rmi.transport.transport$1.run(transport.java:159)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.rmi.transport.transport.serviceCall(transport.java:155)
位于sun.rmi.transport.tcp.tcpttransport.handleMessages(tcpttransport.java:535)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run0(tcpttransport.java:790)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run(tcpttransport.java:649)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:662)
原因:java.net.MalformedURLException:未知协议:rsrc
位于java.net.URL。(URL.java:574)
在java.net.URL.(URL.java:464)
在java.net.URL.(URL.java:413)
位于sun.rmi.server.LoaderHandler.PathTorls(LoaderHandler.java:751)
位于sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.j