我有一个应用程序(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将这些罐子包含在一些具有相同名称和路径的类中:
出于某种原因,windows使用axiom-impl-1.2.19.jar生成包络,linux使用axiom-dom-1.2.19.jar。使用的类是org.apache.axiom.soap.impl.common.SOAPFactoryImpl,并且存在于两个jar中
谢谢!