我正在使用JBoss 5.0构建一个Web应用程序,该应用程序连接到我部署应用程序的同一服务器上的JMS队列和主题。我遇到了一个问题,我得到以下错误。
ConnectionFactory tfact = (ConnectionFactory) cntxt.lookup(p.getProperty("topicFactory"));
ERROR [STDERR] java.lang.ClassCastException: org.hornetq.jms.client.HornetQQueueConnectionFactory cannot be cast to javax.jms.ConnectionFactory
ERROR [STDERR] at com.delegation.AgentDelegator.<init>(AgentDelegator.java:48)
ERROR [STDERR] at com.ui.properties.OnStartupServlet.init(OnStartupServlet.java:50)
ERROR [STDERR] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
ERROR [STDERR] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
ERROR [STDERR] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4122)
ERROR [STDERR] at org.apache.catalina.core.StandardContext.start(StandardContext.java:4417)
ERROR [STDERR] at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:313)
ERROR [STDERR] at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:145)
ERROR [STDERR] at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
ERROR [STDERR] at org.jboss.web.deployers.WebModule.startModule(WebModule.java:122)
ERROR [STDERR] at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:597)
ERROR [STDERR] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
ERROR [STDERR] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
ERROR [STDERR] at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
ERROR [STDERR] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
ERROR [STDERR] at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
ERROR [STDERR] at com.sun.proxy.$Proxy38.start(Unknown Source)
ERROR [STDERR] at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
ERROR [STDERR] at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
ERROR [STDERR] at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
ERROR [STDERR] at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
ERROR [STDERR] at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:297)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:826)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:556)
ERROR [STDERR] at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
ERROR [STDERR] at org.jboss.system.ServiceController.start(ServiceController.java:460)
ERROR [STDERR] at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
ERROR [STDERR] at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
ERROR [STDERR] at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
ERROR [STDERR] at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
ERROR [STDERR] at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:55)
ERROR [STDERR] at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179)
ERROR [STDERR] at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1454)
ERROR [STDERR] at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1172)
ERROR [STDERR] at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1193)
ERROR [STDERR] at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1113)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:826)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:556)
ERROR [STDERR] at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:789)
ERROR [STDERR] at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:699)
ERROR [STDERR] at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
ERROR [STDERR] at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
ERROR [STDERR] at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
ERROR [STDERR] at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:403)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:778)
ERROR [STDERR] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:543)
ERROR [STDERR] at org.jboss.system.server.profileservice.repository.AbstractProfileService.registerProfile(AbstractProfileService.java:308)
ERROR [STDERR] at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:256)
ERROR [STDERR] at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
ERROR [STDERR] at org.jboss.Main.boot(Main.java:229)
ERROR [STDERR] at org.jboss.Main$1.call(Main.java:561)
ERROR [STDERR] at org.jboss.Main$1.call(Main.java:557)
ERROR [STDERR] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
ERROR [STDERR] at java.util.concurrent.FutureTask.run(FutureTask.java:138)
ERROR [STDERR] at java.lang.Thread.run(Thread.java:662)
我在不同的机器上运行相同的代码,它工作得很好....我注意到我正在导入的JBoss库中有两个jar文件具有org.hornetq.jms.client.HornetQQueueConnectionFactory。一个叫hornetq-jms.jar,另一个叫hornetq-jms-client.jar。我的假设是,在一台机器上,我使用来自一个罐子的类,在另一台机器上,我使用另一个罐子。我已经被告知,它将进入哪个jar取决于我的类路径中的顺序。如果是这种情况,我的问题是:我如何改变战争文件的类路径?如果没有,我的问题是:1)。我如何知道我正在使用的是哪一个?2)我如何改变我使用的?
提前感谢!
您是否正确配置了连接工厂?
根据https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/5/pdf/HornetQ_User_Guide/JBoss_Enterprise_Application_Platform-5-HornetQ_User_Guide-en-US.pdf,您必须使用signature=generic
配置连接工厂以检索javax.jms.ConnectionFactory:
<connection-factory name="ConnectionFactory" signature="generic">
另一个问题是p.getProperty("topicFactory")
指向什么。价值是否来自非应用程序一部分的外部资源?