Websocket “错误”;没有这样的实例方法:java.util.Enumeration org.apache.log4j.Logger.getAllAppenders();在ApacheServiceMix 4.5.2中运行JWebSoketBundle时
我想将JWebSocket嵌入到osgi环境中(例如ApacheServiceMix4.5.2)。我采取了以下步骤:Websocket “错误”;没有这样的实例方法:java.util.Enumeration org.apache.log4j.Logger.getAllAppenders();在ApacheServiceMix 4.5.2中运行JWebSoketBundle时,websocket,log4j,apache-karaf,apache-servicemix,Websocket,Log4j,Apache Karaf,Apache Servicemix,我想将JWebSocket嵌入到osgi环境中(例如ApacheServiceMix4.5.2)。我采取了以下步骤: 我将jWebSocketServer-Bundle-1.0.jar放到 servicemix 我创建了另一个bundle来调用JWebSocketServer类的主函数 但当mybundle运行时,它会引发上述异常。我试着调试以发现问题,我发现在JSocketFactory.java的第112行有一个错误 109 if (lDebug) { 110 Logger lL
- 我将jWebSocketServer-Bundle-1.0.jar放到 servicemix
- 我创建了另一个bundle来调用JWebSocketServer类的主函数
109 if (lDebug) {
110 Logger lLogger = mLog.getRootLogger();
111 String lAppenderStr = "";
112 Enumeration lAppenders = lLogger.getAllAppenders()**;
记录器没有getAllAppenders()方法。服务组合的guest log4j覆盖了jWebSocketServer-Bundle-1.0.jar中的log4j,但我对此不确定
你能帮帮我吗?多谢各位
下面是我在MyActivator类中调用JWebSocketSer的代码
公共类MyActivator实现BundleActivator
{
}由于ServiceMix/Karaf确实使用Pax日志功能来提供开箱即用的日志功能,因此此功能不可用。我想你必须确保JWebSocketSer不需要appender。如果您想添加自定义附加器,可以通过不同的方式完成。将Appender注册为服务或将片段捆绑包附加到包含此Appender的Pax日志记录实现捆绑包 请确保这两个东西都使用兼容的log4j版本。我检查了Karaf 2.3.3,它嵌入了Log4j 1.2.15。不起作用并且会导致很多问题的是JWebSocketServer打包,它是一个“胖罐子”。在JWebSocketServer.jar中又嵌入了log4j(顺便说一句,还有junit)
若你们放下一些东西,把普通JAR放到Karaf部署中,它会被包装在一个包中,这个包导出所有内容并具有动态导入包。为了避免您的问题,您可能需要重新打包jwebsocket。对我来说,这看起来像是版本不匹配。它不会抛出ClassNotFound异常。班级决议很好。
public void start(BundleContext bundleContext) throws Exception
{
JWebSocketServer.main(null);
}
public void stop(BundleContext bundleContext) throws Exception
{
}