2016-09-23 58 views
0

我正在使用JCo连接器使用JAVA从SAP系统写入和读取iDoc。OSGi(Karaf)中的JCo(SAP)

在“普通JAVA”中,这个工作没有问题。

server = JCoIDoc.getServer(SERVER); 
    server.setIDocHandlerFactory(new MyIDocHandlerFactory()); 
    server.setTIDHandler(new MyTidHandler()); 
    MyThrowableListener listener = new MyThrowableListener(); 
    server.addServerErrorListener(listener); 
    server.addServerExceptionListener(listener); 
    server.setConnectionCount(1); 
    server.start(); 

现在...我想捆绑这个代码,并把它放在一个OSGi容器(卡拉夫)。但是,在这一行立即崩溃:

server = JCoIDoc.getServer(SERVER); 

的错误是:

com.sap.conn.jco.JCoException:(106)JCO_ERROR_RESOURCE:服务器服务器 根本不存在的COM 。 sap.conn.jco.rt.StandaloneServerFactory.update(StandaloneServerFactory.java:338) at com.sap.conn.jco.rt.StandaloneServerFactory.getServerInstance(StandaloneServerFactory.java:175) at com.sap.conn.idoc。 jco.JCoIDoc.getServer(JCoIDoc.java:301)

我不明白为什么会发生这种情况...我需要某种特殊配置吗?或者不可能在OSGi上运行这个。

我知道我可以使用骆驼汁来做连接,但我想尝试一个非骆驼解决方案。

+0

是否所有的依赖都被部署到Karaf? –

+0

是的。这不是依赖性问题(我认为)。当我使用camel-sap时,我不得不安装依赖关系。 – Desenfoque

+0

您是否已将JCo库和IDOC适配器打包到单独的捆绑包中? – vwegert

回答

0

从SAP方面来看,SAP连接器并不真正支持OSGi。所以默认的初始化可能无法很好地工作。

另一方面,我知道hibersap在OSGi中工作得很好。 所以你应该能够弄清楚他们是如何进行连接的,或者只是简单地使用它们的抽象。他们漂亮的pojo绑定使得SAP的使用非常方便。

我已经在客户的Apache Karaf中使用过hibersap,并且自version 1.2.0起效非常好。

+0

似乎Hibersap不支持iDocs ...无赖 – Desenfoque

+0

“SAP连接器在SAP方面并不真正支持OSGi。“ - 有趣的是,它在ADT内部完美工作,这是一个Eclipse扩展,它又是在OSGi框架内运行的...... – vwegert

+0

它可以正常工作,但是据我所知,SAP确实不支持它。我会为任何指针感到高兴,否则,因为我们的客户可能需要这种支持。 –

0

我不认为错误消息

com.sap.conn.jco.JCoException:(106)JCO_ERROR_RESOURCE:服务器服务器 不存在

有什么与OSGi。它只是表示默认的JCo运行时无法找到并加载JCoServer(您命名为“SERVER”)的配置。 在您的工作“普通Java”设置中,必须将其存储在属性文件SERVER.jcoServer中。在你的OSGi环境中,这个文件或者丢失,没有存储在正确的目录中,或者应用程序缺少文件系统所需的读取权限。默认情况下,JCo在进程的当前工作目录中搜索那些<destinationName>.jcoDestination<serverName>.jcoServer配置属性文件。

相关问题