[jboss-user] [JBossWS] - Soap service returning complex objects(Such as hashmaps) inc

mwkohout do-not-reply at jboss.com
Wed Nov 28 11:12:03 EST 2007


Hello All.

I've got a soap service(which is also a seam component) with a method that returns a hashmap.  Through debugging I know that my method is returning a valid set of java objects but from client code( Ruby and Java) all I'm getting is a null value.  Other methods that return simple strings or return an array of Longs work perfectly.

as far as my platform I'm running on jboss 4.2.1GA with Seam 2.0.0GA.

here's the relevant server code.  The first method is one that works incorrectly and the bottom two work:

  | @WebService()
  | @SOAPBinding(
  |         parameterStyle=SOAPBinding.ParameterStyle.BARE, style=SOAPBinding.Style.RPC)
  | //@SOAPBinding(style = SOAPBinding.Style.RPC)
  | @Name("StudyServiceWS")
  | @Scope(value=ScopeType.STATELESS)
  | @Stateless
  | public class StudyService implements StudyServiceRemote{
  | 
  | //this is a test method that currently returns a null to the client
  |  @WebMethod
  |     public HashMap getHashMap( String key, String value)
  |     {
  |         HashMap m = new HashMap();
  |         m.put( key, value);
  |         return m;
  |     }
  | //this method works
  | @WebMethod()
  | public String echo( @WebParam(name = "echo")String echo)
  | {
  |     return echo;
  | }
  | //this also works
  | @WebMethod
  |     public Long[] getStudyIDs( String x500)
  |     {
  |         Long[] returnIDs = null;
  |         UserHome userHome = (UserHome)Component.getInstance(
  |             UserHome.class, true);
  |         User user = userHome.findByInternetID(x500);
  |         
  |        ......
  |        
  |        return returnIDs;
  |     }
  | 
  | 

generated wsdl:

  | <definitions name='StudyServiceService' targetNamespace='http://webService.core.ictr.umn.edu/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:ns1='http://jaxb.dev.java.net/array' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://webService.core.ictr.umn.edu/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
  |  <types>
  |   <xs:schema targetNamespace='http://webService.core.ictr.umn.edu/' version='1.0' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
  |    <xs:complexType name='hashMap'>
  |     <xs:complexContent>
  |      <xs:extension base='ns1:abstractMap' xmlns:ns1='http://webService.core.ictr.umn.edu/'>
  |       <xs:sequence/>
  |      </xs:extension>
  |     </xs:complexContent>
  | 
  |    </xs:complexType>
  |    <xs:complexType abstract='true' name='abstractMap'/>
  |    <xs:complexType name='arrayList'>
  |     <xs:complexContent>
  |      <xs:extension base='ns2:abstractList' xmlns:ns2='http://webService.core.ictr.umn.edu/'>
  |       <xs:sequence/>
  |      </xs:extension>
  |     </xs:complexContent>
  |    </xs:complexType>
  | 
  |    <xs:complexType abstract='true' name='abstractList'>
  |     <xs:complexContent>
  |      <xs:extension base='ns3:abstractCollection' xmlns:ns3='http://webService.core.ictr.umn.edu/'>
  |       <xs:sequence/>
  |      </xs:extension>
  |     </xs:complexContent>
  |    </xs:complexType>
  |    <xs:complexType abstract='true' name='abstractCollection'/>
  |   </xs:schema>
  | 
  |   <xs:schema targetNamespace='http://jaxb.dev.java.net/array' version='1.0' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
  |    <xs:complexType final='#all' name='longArray'>
  |     <xs:sequence>
  |      <xs:element maxOccurs='unbounded' minOccurs='0' name='item' nillable='true' type='xs:long'/>
  |     </xs:sequence>
  |    </xs:complexType>
  |   </xs:schema>
  |  </types>
  |  <message name='StudyService_getHashMap'>
  | 
  |   <part name='arg0' type='xsd:string'></part>
  |   <part name='arg1' type='xsd:string'></part>
  |  </message>
  |  <message name='StudyService_getStudyIDs'>
  |   <part name='arg0' type='xsd:string'></part>
  |  </message>
  |  <message name='StudyService_getSubjects'>
  |   <part name='arg0' type='xsd:long'></part>
  |  </message>
  | 
  |  <message name='StudyService_getSubjectsResponse'>
  |   <part name='return' type='tns:arrayList'></part>
  |  </message>
  |  <message name='StudyService_getStudies'>
  |   <part name='x500' type='xsd:string'></part>
  |  </message>
  |  <message name='StudyService_getStudy'>
  |   <part name='arg0' type='xsd:string'></part>
  |   <part name='arg1' type='xsd:long'></part>
  | 
  |  </message>
  |  <message name='StudyService_echo'>
  |   <part name='echo' type='xsd:string'></part>
  |  </message>
  |  <message name='StudyService_getStudyResponse'>
  |   <part name='return' type='tns:hashMap'></part>
  |  </message>
  |  <message name='StudyService_getStudyIDsResponse'>
  |   <part name='return' type='ns1:longArray'></part>
  | 
  |  </message>
  |  <message name='StudyService_getSubjectsStringOperation'>
  |   <part name='arg0' type='xsd:string'></part>
  |  </message>
  |  <message name='StudyService_getStudiesResponse'>
  |   <part name='return' type='tns:hashMap'></part>
  |  </message>
  |  <message name='StudyService_getSubjectsStringOperationResponse'>
  |   <part name='return' type='tns:arrayList'></part>
  | 
  |  </message>
  |  <message name='StudyService_echoResponse'>
  |   <part name='return' type='xsd:string'></part>
  |  </message>
  |  <message name='StudyService_getHashMapResponse'>
  |   <part name='return' type='tns:hashMap'></part>
  |  </message>
  |  <portType name='StudyService'>
  |   <operation name='echo' parameterOrder='echo'>
  | 
  |    <input message='tns:StudyService_echo'></input>
  |    <output message='tns:StudyService_echoResponse'></output>
  |   </operation>
  |   <operation name='getHashMap' parameterOrder='arg0 arg1'>
  |    <input message='tns:StudyService_getHashMap'></input>
  |    <output message='tns:StudyService_getHashMapResponse'></output>
  |   </operation>
  |   <operation name='getStudies' parameterOrder='x500'>
  |    <input message='tns:StudyService_getStudies'></input>
  | 
  |    <output message='tns:StudyService_getStudiesResponse'></output>
  |   </operation>
  |   <operation name='getStudy' parameterOrder='arg0 arg1'>
  |    <input message='tns:StudyService_getStudy'></input>
  |    <output message='tns:StudyService_getStudyResponse'></output>
  |   </operation>
  |   <operation name='getStudyIDs' parameterOrder='arg0'>
  |    <input message='tns:StudyService_getStudyIDs'></input>
  |    <output message='tns:StudyService_getStudyIDsResponse'></output>
  | 
  |   </operation>
  |   <operation name='getSubjects' parameterOrder='arg0'>
  |    <input message='tns:StudyService_getSubjects'></input>
  |    <output message='tns:StudyService_getSubjectsResponse'></output>
  |   </operation>
  |   <operation name='getSubjectsStringOperation' parameterOrder='arg0'>
  |    <input message='tns:StudyService_getSubjectsStringOperation'></input>
  |    <output message='tns:StudyService_getSubjectsStringOperationResponse'></output>
  |   </operation>
  | 
  |  </portType>
  |  <binding name='StudyServiceBinding' type='tns:StudyService'>
  |   <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
  |   <operation name='echo'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </input>
  |    <output>
  | 
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </output>
  |   </operation>
  |   <operation name='getHashMap'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </input>
  |    <output>
  | 
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </output>
  |   </operation>
  |   <operation name='getStudies'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </input>
  |    <output>
  | 
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </output>
  |   </operation>
  |   <operation name='getStudy'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </input>
  |    <output>
  | 
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </output>
  |   </operation>
  |   <operation name='getStudyIDs'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </input>
  |    <output>
  | 
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </output>
  |   </operation>
  |   <operation name='getSubjects'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </input>
  |    <output>
  | 
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </output>
  |   </operation>
  |   <operation name='getSubjectsStringOperation'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </input>
  |    <output>
  | 
  |     <soap:body namespace='http://webService.core.ictr.umn.edu/' use='literal'/>
  |    </output>
  |   </operation>
  |  </binding>
  |  <service name='StudyServiceService'>
  |   <port binding='tns:StudyServiceBinding' name='StudyServicePort'>
  |    <soap:address location='http://127.0.0.1:8080/StudyServiceService/StudyService'/>
  |   </port>
  |  </service>
  | 
  | </definitions>
  | 

Any ideas?  Any suggestion or 4 letter word would be welcome.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4108561#4108561

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4108561



More information about the jboss-user mailing list