jaxb - Axis2 web service invalid SOAP response - package-info.class ignored on linux -
we have: 3-rd party product use generate "soap web services" axis2 1.6.2 , tried 1.7.4.
this test web app has 2 objects only: 1 web service jar , 1 empty class.
linux: opensuse 42.1 leap
- tomcat 6.0.43 or tomcat 8.5.8
- openjdk 1.8.0_101 or
- java version "1.8.0_66" java(tm) se runtime environment (build 1.8.0_66-b17) java hotspot(tm) 64-bit server vm (build 25.66-b17, mixed mode)
- axis2-1.6.2 or 1.7.4
windows:
- tomcat 6.0.43
- oracle jdk 1.8.0_65
- axis2-1.6.2 or 1.7.4
in windows following "test web service" working ok.
we copied whole "tomcat 6.0.43" windows linux , changed context path. on linux tried freshly downloaded "tomcat 8.5.8" - zip apache. in web-inf/classes have 1 class only: xx.yyy.myhelloworld. in web-inf/servicejars have generated 1 "axis2 web service jar" kov025.jar , classes using package xx.yyy.
on linux:
it working ok if remove class xx.yyy.myhelloworld web-inf\classes. or if copy pacakage-info.class "web-inf/servicejars/kov025.jar" "web-inf/classes/xx/yyy" (or "web-inf/lib/blabla.jar" within package "xx/yyy"). please see below "response ok" , "response wrong"
why, please ?
testapp/web-inf/web.xml:
<?xml version="1.0" encoding="iso-8859-1"?> <!doctype web-app public "-//sun microsystems, inc.//dtd web application 2.3//en" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <display-name>apache-axis2 servlet</display-name> <servlet-name>axis2servlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.axisservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <display-name>apache-axis2 axisadmin servlet (web admin)</display-name> <servlet-name>axis2adminservlet</servlet-name> <servlet-class>org.apache.axis2.webapp.axisadminservlet</servlet-class> </servlet> <servlet> <display-name>soapmonitorservice</display-name> <servlet-name>soapmonitorservice</servlet-name> <servlet-class>org.apache.axis2.soapmonitor.servlet.soapmonitorservice</servlet-class> <init-param> <param-name>soapmonitorport</param-name> <param-value>5001</param-value> </init-param> <init-param> <param-name>soapmonitorhostname</param-name> <param-value>localhost</param-value> </init-param> </servlet> <!-- **************** servlet mappings: ****************** --> <servlet-mapping> <servlet-name>axis2servlet</servlet-name> <url-pattern>/servlet/axis2servlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>axis2servlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>axis2servlet</servlet-name> <url-pattern>/servaxis2/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>axis2adminservlet</servlet-name> <url-pattern>/axis2-admin/*</url-pattern> </servlet-mapping> ... </web-app> web-inf/servicejars/kov025.jar:
- xx.yyy.objectfactory.class
- xx.yyy.package-info.class
- xx.yyy.kov025result.class
- xx.yyy.kov025adeliawrapper.class
- ... other kov025 classes ...
package xx.yyy; public class myhelloworld { } // package package xx.yyy; // imports import java.util.*; import java.math.*; ... vendor specific classes ... import javax.xml.bind.annotation.xmlaccesstype; import javax.xml.bind.annotation.xmlaccessortype; import javax.xml.bind.annotation.xmlelement; import javax.xml.bind.annotation.xmlrootelement; import javax.xml.bind.annotation.xmltype; /*------------------------------------------------------------------ * class : kov025result * purpose : *-----------------------------------------------------------*/ @xmlrootelement(name = "mainreturn") @xmlaccessortype(xmlaccesstype.field) @xmltype(proporder = {"m_p_rc", "m_p_errlist"}) public class kov025result { @xmlelement(name = "err_lst") private wrapperkov025list000000p_errlist00result m_p_errlist; @xmlelement(name = "rc") private string m_p_rc; /*--------------------------------------------------------------- * method : rc * purpose : getter *---------------------------------------------------------------*/ public string getrc() { return m_p_rc; } /*--------------------------------------------------------------------- * method : rc * purpose : setter *---------------------------------------------------------------*/ public void setrc(string value) { m_p_rc = value; } /*--------------------------------------------------------------------- * method : p_errlist * purpose : getter *-----------------------------------------------------------------*/ public wrapperkov025list000000p_errlist00result geterr_lst() { return m_p_errlist; } /*------------------------------------------------------------------ * method : p_errlist * purpose : setter *-----------------------------------------------------------------*/ public void seterr_lst(wrapperkov025list000000p_errlist00result value) { m_p_errlist = value; } } package xx.yyy; ... @webservice(servicename="kov025", targetnamespace="http://www.example.com/test1", portname="kov025porttype", wsdllocation="meta-inf/kov025.wsdl") @soapbinding(style = soapbinding.style.document, use = soapbinding.use.literal, parameterstyle = soapbinding.parameterstyle.wrapped) @bindingtype(javax.xml.ws.soap.soapbinding.soap11http_binding) public class kov025adeliawrapper { @resource private webservicecontext ctx; ... /*----------------------------------------------------------------- * method : main * purpose : *--------------------------------------------------------------*/ @webmethod(operationname="main") @webresult(name="mainreturn", targetnamespace="http://www.example.com/test1") public synchronized kov025result main(@webparam(name="fsvr", targetnamespace="http://www.example.com/test1", mode=webparam.mode.in) string fsvr) { ... package xx.yyy; import javax.xml.bind.jaxbelement; import javax.xml.bind.annotation.xmlelementdecl; import javax.xml.bind.annotation.xmlregistry; import javax.xml.namespace.qname; @xmlregistry public class objectfactory { private final static qname _kov025result_qname = new qname("http://www.example.com/test1", "kov025result"); private final static qname _kov025list000000p_errlist00result_qname = new qname("http://www.example.com/test1", "kov025list000000p_errlist00result"); private final static qname _wrapperkov025list000000p_errlist00result_qname = new qname("http://www.example.com/test1", "wrapperkov025list000000p_errlist00result"); public objectfactory() { } public kov025result createkov025result() { return new kov025result(); } @xmlelementdecl(namespace = "http://www.example.com/test1", name = "kov025result") public jaxbelement<kov025result> createkov025result(kov025result value) { return new jaxbelement<kov025result>(_kov025result_qname, kov025result.class, null, value); } public kov025list000000p_errlist00result createkov025list000000p_errlist00result() { return new kov025list000000p_errlist00result(); } @xmlelementdecl(namespace = "http://www.example.com/test1", name = "kov025list000000p_errlist00result") public jaxbelement<kov025list000000p_errlist00result> createkov025list000000p_errlist00result(kov025list000000p_errlist00result value) { return new jaxbelement<kov025list000000p_errlist00result>(_kov025list000000p_errlist00result_qname, kov025list000000p_errlist00result.class, null, value); } public wrapperkov025list000000p_errlist00result createwrapperkov025list000000p_errlist00result() { return new wrapperkov025list000000p_errlist00result(); } @xmlelementdecl(namespace = "http://www.example.com/test1", name = "wrapperkov025list000000p_errlist00result") public jaxbelement<wrapperkov025list000000p_errlist00result> createwrapperkov025list000000p_errlist00result(wrapperkov025list000000p_errlist00result value) { return new jaxbelement<wrapperkov025list000000p_errlist00result>(_wrapperkov025list000000p_errlist00result_qname, wrapperkov025list000000p_errlist00result.class, null, value); } } xx.yyy.package-info.java:
@javax.xml.bind.annotation.xmlschema(namespace = "http://www.example.com/test1", elementformdefault = javax.xml.bind.annotation.xmlnsform.qualified , attributeformdefault = javax.xml.bind.annotation.xmlnsform.unqualified) package xx.yyy; wsdl:
<wsdl:definitions targetnamespace="http://www.example.com/test1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:tns="http://www.example.com/test1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"> <wsdl:types> <xsd:schema attributeformdefault="unqualified" elementformdefault="qualified" targetnamespace="http://www.example.com/test1" xmlns:xs="http://www.w3.org/2001/xmlschema"> <xsd:element name="main" type="tns:main"/> <xsd:element name="mainresponse" type="tns:mainresponse"/> <xsd:element name="mainreturn" type="tns:kov025result"/> <xsd:complextype name="main"> <xsd:sequence> <xsd:element minoccurs="0" name="fsvr" type="xsd:string"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="mainresponse"> <xsd:sequence> <xsd:element minoccurs="0" ref="tns:mainreturn"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="kov025result"> <xsd:sequence> <xsd:element minoccurs="0" name="rc" type="xsd:string"/> <xsd:element minoccurs="0" name="err_lst" type="tns:wrapperkov025list000000perrlist00result"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="wrapperkov025list000000perrlist00result"> <xsd:sequence> <xsd:element maxoccurs="unbounded" minoccurs="0" name="err_lst" type="tns:kov025list000000perrlist00result"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="kov025list000000perrlist00result"> <xsd:sequence> <xsd:element minoccurs="0" name="err_dsc" type="xsd:string"/> </xsd:sequence> </xsd:complextype> </xsd:schema> </wsdl:types> <wsdl:message name="main"> <wsdl:part name="parameters" element="tns:main"/> </wsdl:message> <wsdl:message name="mainresponse"> <wsdl:part name="parameters" element="tns:mainresponse"/> </wsdl:message> <wsdl:porttype name="kov025porttype"> <wsdl:operation name="main"> <wsdl:input message="tns:main" wsaw:action="http://www.example.com/test1/kov025adeliawrapper/mainrequest"/> <wsdl:output message="tns:mainresponse" wsaw:action="http://www.example.com/test1/kov025adeliawrapper/mainresponse"/> </wsdl:operation> </wsdl:porttype> <wsdl:binding name="kov025porttypebinding" type="tns:kov025porttype"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="main"> <soap:operation soapaction="" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="kov025"> <wsdl:port name="kov025porttype" binding="tns:kov025porttypebinding"> <soap:address location="http://10.0.0.196:8080/testapp/servaxis2/kov025.kov025porttype/"/> </wsdl:port> </wsdl:service> </wsdl:definitions> soap request:
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tls="http://www.example.com/test1"> <soapenv:header/> <soapenv:body> <tls:main> <!--optional:--> <tls:fsvr>xyz</tls:fsvr> </tls:main> </soapenv:body> </soapenv:envelope> soap response ok:
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <dlwmin:mainresponse xmlns:dlwmin="http://www.example.com/test1" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <mainreturn xmlns="http://www.example.com/test1"> <rc/> <err_lst/> </mainreturn> </dlwmin:mainresponse> </soapenv:body> </soapenv:envelope> soap response wrong (namespace prefix ns2):
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <dlwmin:mainresponse xmlns:dlwmin="http://www.example.com/test1" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <mainreturn xmlns:ns2="http://www.example.com/test1"> <rc/> <err_lst/> </mainreturn> </dlwmin:mainresponse> </soapenv:body> </soapenv:envelope> user1@vkovlinux1:/apache-tomcat-6.0.43> bin/startup-debug.sh using catalina_base: /apache-tomcat-6.0.43 using catalina_home: /apache-tomcat-6.0.43 using catalina_tmpdir: /apache-tomcat-6.0.43/temp using jre_home: /usr/lib64/jvm/java/jre using classpath: /apache-tomcat-6.0.43/bin/bootstrap.jar listening transport dt_socket @ address: 8000 nov 10, 2016 11:32:24 pm org.apache.catalina.core.aprlifecyclelistener init info: apr based apache tomcat native library allows optimal performance in production environments not found on java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib nov 10, 2016 11:32:24 pm org.apache.tomcat.util.digester.setpropertiesrule begin warning: [setpropertiesrule]{server/service/engine/host/context} setting property 'debug' '0' did not find matching property. nov 10, 2016 11:32:25 pm org.apache.coyote.http11.http11protocol init info: initializing coyote http/1.1 on http-8080 nov 10, 2016 11:32:25 pm org.apache.catalina.startup.catalina load info: initialization processed in 845 ms nov 10, 2016 11:32:25 pm org.apache.catalina.core.standardservice start info: starting service catalina nov 10, 2016 11:32:25 pm org.apache.catalina.core.standardengine start info: starting servlet engine: apache tomcat/6.0.43 0 [main] info org.apache.axis2.deployment.clusterbuilder - clustering has been disabled 162 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: addressing-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/addressing-1.6.2.mar 257 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: jaxws-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/axis2-jaxws-mar-1.6.2.mar 285 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: metadataexchange-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/mex-1.6.2.mar 300 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: mtompolicy-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/mtompolicy-1.6.2.mar 340 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: ping-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/ping-1.6.2.mar 370 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: rahas-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/rahas-1.6.2.mar 422 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: rampart-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/rampart-1.6.2.mar 427 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: script-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/scripting-1.6.2.mar 442 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: soapmonitor-1.6.2 - file:/wadelia/_t/testapp/web-inf/modules/soapmonitor-1.6.2.mar 654 [main] info org.apache.axis2.deployment.moduledeployer - deploying module: addressing-1.6.2 - file:/wadelia/_t/testapp/web-inf/lib/axis2-1.6.2.jar 3455 [main] info org.apache.axis2.jaxws.framework.jaxwsdeployer - deploying artifact : /wadelia/_t/testapp/web-inf/servicejars/kov025.jar 3984 [main] info org.apache.axis2.jaxws.framework.jaxwsdeployer - deploying jaxws annotated class xx.yyy.kov025adeliawrapper service - kov025 nov 10, 2016 11:32:30 pm org.apache.coyote.http11.http11protocol start info: starting coyote http/1.1 on http-8080 nov 10, 2016 11:32:30 pm org.apache.jk.common.channelsocket init info: jk: ajp13 listening on /0.0.0.0:8009 nov 10, 2016 11:32:30 pm org.apache.jk.server.jkmain start info: jk running id=0 time=0/48 config=null nov 10, 2016 11:32:30 pm org.apache.catalina.startup.catalina start info: server startup in 5715 ms
Comments
Post a Comment