我有一个奇怪的问题.我有一个以前部署在tomcat中的Java应用程序,并且很高兴地使用logback classic作为slf4j实现.现在,当我们尝试在jboss 7.1.final服务器中部署相同的应用程序时,它甚至没有部署应用程序maoning.
java.lang.ClassCastException: org.slf4j.impl.Slf4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
这是令人讨厌的代码行
final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();Run Code Online (Sandbox Code Playgroud)
拥有他的类是弹簧注入而失败 - 因此整个应用程序无法部署.有人有解决方案吗?提前致谢
在查看此站点和其他论坛后,我意识到Jboss 7捆绑了它自己的slf4j实现,并实现LogbackContext在logback中所做的相同ILoggerFactory接口.我们的应用程序尝试获取相同的实例,但应用服务器强加了它自己的slf4j实现.
我试图修改jboss\modules\org\slf4j\impl\main中的module.xml并将其指向logback jar.
<resources>
<resource-root path="logback-classic-0.9.28.jar"/>
<resource-root path="logback-core-0.9.28.jar"/>
</resources>
Run Code Online (Sandbox Code Playgroud)
现在,当我启动应用程序时,我遇到了严重的错误
Exception starting filter WicketFilter: java.lang.ClassCastException: ch.qos.logback.classic.LoggerContext cannot be cast to ch.qos.logback.classic.LoggerContext
我没办法.任何jboss和logback专家都可以提供帮助吗?提前致谢
我已经在MULE上探索了网络,并且了解到应用程序之间要进行通信 - 即使它们部署在同一个Mule实例中 - 它们也必须使用TCP,HTTP或JMS传输.
VM不受支持.
但是我发现这与ESB原则有点矛盾.理想情况下,我们应该能够在ESB中定义EndPoints并使用任何传输连接到它吗?我可能错了.此外,由于所有应用程序共享相同的JVM,人们希望能够通过内存中的VM队列进行通信,而不是依赖于无事务的HTTP协议或TCP,其中可以进行的连接数取决于服务器资源.即使对于JMS,我们也需要定义和管理另一个队列以及可能对性能产生影响的大量使用.虽然我同意如果我们有分布式和集群系统可能是HTTP或JMS将只是选项.
是否有任何计划将VM作为应用程序间通信协议进行合并,或者是否有其他方式可以让一个Flow与另一个Flow Endpoint通信但在不同的应用程序中?
编辑: - 来自Mulesoft的答案
http://forum.mulesoft.org/mulesoft/topics/concept_of_endpoint_and_inter_app_communication
是的,我们正在考虑将来版本的应用程序间通信.我们还要做什么时仍然不清楚,但我们对于我们希望这个功能如何表现有一些想法.我们可以创建一个服务器级配置,您可以在其中定义要在所有应用中使用的资源.在那里,您将能够定义VM连接器并使用它在同一服务器中的应用程序之间发送消息.正如我所说,这只是一个想法.
我们有一个Mule应用程序,其中有6个或7个流,每个流有大约5个组件。这是设置。我们将JMS请求发送到ActiveMQ队列。ule子听了。根据消息的内容,我们将其转发到相应的流。
<flow name="MyAPPAutomationFlow" doc:name="MyAPPAutomationFlow">
<composite-source>
<jms:inbound-endpoint queue="MyAPPOrderQ" connector-ref="Active_MQ_1" doc:name="AMQ1 Inbound Endpoint"/>
<jms:inbound-endpoint queue="MyAPPOrderQ" connector-ref="Active_MQ_2" doc:name="AMQ2 Inbound Endpoint"/>
</composite-source>
<choice doc:name="Choice">
<when expression="payload.getProcessOrder().getOrderType().toString().equals("ANC")" evaluator="groovy">
<processor-chain>
<flow-ref name="ProcessOneFLow" doc:name="Go to ProcessOneFLow"/>
</processor-chain>
</when>
<when....
...........
</choice>
</flow>
<flow name="ProcessOneFLow" doc:name="ProcessOneFLow">
<vm:inbound-endpoint exchange-pattern="one-way" path="ProcessOneFLow" responseTimeout="10000" mimeType="text/xml" doc:name="New Process Order"/>
<component doc:name="Create A">
<spring-object bean="createA"/>
</component>
<component doc:name="Create B">
<spring-object bean="createB"/>
</component>
<component doc:name="Create C">
<spring-object bean="createC"/>
</component>
<component doc:name="Create D">
<spring-object bean="createD"/>
</component>
</flow>
<spring:beans>
<spring:import resource="classpath:spring/service.xml"/>
<spring:bean id="createA" name="createA" class="my.app.components.CreateAService"/>
<spring:bean id="createB" …Run Code Online (Sandbox Code Playgroud)