使用jre for linux / windows的axis2的不同行为

时间:2016-09-23 05:35:25

标签: java jetty axis2 axiom

我有一个应用程序(jar)启动嵌入式jetty服务器8.1.18.v20150929。此服务器部署一个执行axis2客户端的webapp(war)。

当我在Windows中运行它时,该应用程序正常工作。但在Linux中没有。

jar应用程序以此命令启动:

java -jar app.jar 

并使用jre 7u79。

这是尝试调用服务时linux中的错误:

Duplicate declaration for namespace prefix 'soapenv'

我检查了肥皂信封,发现了一个区别:

WINDOWS:

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">...

LINUX:

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
  xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">...

为什么soapenv在linux中重复?唯一的区别是jre版本(linux / windows)。

另一件事,classpath将这些罐子包含在一些具有相同名称和路径的类中:

  • axiom-dom-1.2.19.jar
  • 公理-IMPL-1.2.19.jar

出于某种原因,windows使用axiom-impl-1.2.19.jar生成包络,linux使用axiom-dom-1.2.19.jar。使用的类是org.apache.axiom.soap.impl.common.SOAPFactoryImpl,并且存在于两个jar中

谢谢!

0 个答案:

没有答案