4 Replies Latest reply on Sep 19, 2007 7:16 AM by Thomas Diesler

    Strange - Entry Point not receive WS Message data

    Ronen Yaari Newbie

      I am using JBoss 4.2.1 with JBOSSWS 2.0.1

      I have created a web service that uses a provided WSDL, when I send the WS request there are no errors on JBoss however my web service entry point does not receive in the IN parameter any data of the request (the object value is null), however, the data that I set for the response object does return in the return message.

      The Web Service Entry Point:

      package com.zoomix.asbl.ws.ep.login;
      
      import javax.jws.HandlerChain;
      import javax.jws.WebMethod;
      import javax.jws.WebParam;
      import javax.jws.WebService;
      import javax.xml.ws.Holder;
      import javax.xml.ws.RequestWrapper;
      import javax.xml.ws.ResponseWrapper;
      
      import com.zoomix.as.connector.Connector;
      import com.zoomix.as.context.imp.MasterContext;
      import com.zoomix.asbl.ws.ep.login.model.LoginSuccessType;
      import com.zoomix.asbl.ws.ep.login.model.RequestType;
      import com.zoomix.asbl.ws.ep.login.model.ResponseType;
      import com.zoomix.infra.log.ZLogger;
      
      /**
       * The Login web service Entry Point
       *
       */
      @WebService(wsdlLocation = "WEB-INF/ws/login/LoginG.wsdl", name = "Login", targetNamespace = "http://model.login.ep.ws.asbl.zoomix.com/")
      public class LoginEP {
      
       @WebMethod
       @RequestWrapper(localName = "message", targetNamespace = "http://model.login.ep.ws.asbl.zoomix.com/", className = "com.zoomix.asbl.ws.ep.login.model.Message")
       @ResponseWrapper(localName = "message", targetNamespace = "http://model.login.ep.ws.asbl.zoomix.com/", className = "com.zoomix.asbl.ws.ep.login.model.Message")
       public void message (
       @WebParam(name = "request", targetNamespace = "", mode = WebParam.Mode.INOUT)
       Holder<RequestType> request,
       @WebParam(name = "response", targetNamespace = "", mode = WebParam.Mode.INOUT)
       Holder<ResponseType> response) {
      
       logger.debug("LoginEP::message() --> IN");
      
       // THE request.value object I receive is null !!!
      
      
       // the data I set below DO return in the WS response
       ResponseType responseType = new ResponseType();
       LoginSuccessType s = new LoginSuccessType();
       s.setFirstName("FIRST");
       s.setLastName("LAST");
       s.setStatus(1);
       responseType.setData(s);
       response.value = responseType;
      
       }
      
       // logger
       private static ZLogger logger = ZLogger.getZLogger(LoginEP.class.getName());
      }
      



      The WSDL:

      <?xml version="1.0" encoding="UTF-8"?>
      <definitions name="LoginService" targetNamespace="http://model.login.ep.ws.asbl.zoomix.com/" xmlns:tns="http://model.login.ep.ws.asbl.zoomix.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
       <types>
       <xsd:schema targetNamespace="http://model.login.ep.ws.asbl.zoomix.com/" version="1.0" xmlns:tns="http://model.login.ep.ws.asbl.zoomix.com/" xmlns:tns2="http://gen.model.infra.zoomix.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc">
       <xs:import namespace="http://gen.model.infra.zoomix.com/" schemaLocation="./GeneralTypes.xsd"/>
       <xs:annotation>
       <xs:appinfo>
       <jaxb:globalBindings>
       <xjc:serializable />
       </jaxb:globalBindings>
       </xs:appinfo>
       </xs:annotation>
       <xsd:element name="message">
       <xsd:complexType>
       <xsd:sequence>
       <xsd:element name="request" type="tns:requestType" />
       <xsd:element name="response" type="tns:responseType" minOccurs="0" maxOccurs="1" />
       </xsd:sequence>
       </xsd:complexType>
       </xsd:element>
       <xsd:complexType name="requestType">
       <xsd:sequence>
       <xsd:element name="data" type="tns:loginType" />
       </xsd:sequence>
       <xsd:attribute name="operation" type="tns2:operationType" use="required" />
       </xsd:complexType>
       <xsd:complexType name="loginType">
       <xsd:sequence>
       <xsd:element name="password" type="tns:passwordType" minOccurs="1" />
       </xsd:sequence>
       </xsd:complexType>
       <xsd:complexType name="responseType">
       <xsd:sequence>
       <xsd:element name="data" type="tns:loginSuccessType" />
       </xsd:sequence>
       <xsd:attribute name="status" type="tns2:statusType" use="required" />
       <xsd:attribute name="category" type="tns2:categoryType" use="optional" />
       <xsd:attribute name="msgId" type="tns:buff50" use="required" />
       <xsd:attribute name="msg" type="tns:buff255" use="required" />
       <xsd:attribute name="uid" type="tns:buff50" use="required" />
       </xsd:complexType>
       <xsd:complexType name="loginSuccessType">
       <xsd:sequence>
       <xsd:element name="firstName" type="tns:buff255" minOccurs="1" />
       <xsd:element name="lastName" type="tns:buff255" minOccurs="1" />
       <xsd:element name="status" type="xsd:int" minOccurs="1" />
       </xsd:sequence>
       </xsd:complexType>
       <xsd:simpleType name="passwordType">
       <xsd:restriction base="xsd:string" />
       </xsd:simpleType>
       <xsd:simpleType name="statusType">
       <xsd:restriction base="xsd:string">
       <xsd:enumeration value="OK" />
       <xsd:enumeration value="ERR" />
       </xsd:restriction>
       </xsd:simpleType>
      
       <xsd:simpleType name="categoryType">
       <xsd:restriction base="xsd:string">
       <xsd:enumeration value="INFRA" />
       <xsd:enumeration value="BL" />
       </xsd:restriction>
       </xsd:simpleType>
      
       <xsd:simpleType name="buff50">
       <xsd:restriction base="xsd:string">
       <xsd:minLength value="1" />
       <xsd:maxLength value="50" />
       </xsd:restriction>
       </xsd:simpleType>
      
       <xsd:simpleType name="buff255">
       <xsd:restriction base="xsd:string">
       <xsd:minLength value="1" />
       <xsd:maxLength value="255" />
       </xsd:restriction>
       </xsd:simpleType>
      
       <xsd:simpleType name="operationType">
       <xsd:restriction base="xsd:string">
       <xsd:enumeration value="LOGIN" />
       </xsd:restriction>
       </xsd:simpleType>
      
       </xsd:schema>
       </types>
       <message name="Login_messageResponse">
       <part name="message" element="tns:message">
       </part>
       </message>
       <message name="Login_message">
       <part name="message" element="tns:message">
       </part>
       </message>
       <portType name="Login">
       <operation name="message" parameterOrder="message">
       <input message="tns:Login_message">
       </input>
       <output message="tns:Login_messageResponse">
       </output>
       </operation>
       </portType>
       <binding name="LoginBinding" type="tns:Login">
       <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
       <operation name="message">
       <soap:operation soapAction=""/>
       <input>
       <soap:body use="literal"/>
       </input>
       <output>
       <soap:body use="literal"/>
       </output>
       </operation>
       </binding>
       <service name="LoginEPService">
       <port name="LoginPort" binding="tns:LoginBinding">
       <soap:address location="http://127.0.0.1:8081/ws/wslogin"/>
       </port>
       </service>
      </definitions>