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

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -