I am using JBoss 4.0.2 on JRE 1.5, Eclipse 3.0.2 with JBoss IDE 
1.4.1-e31-jre15. I have a session bean, which has two methods exposed to a 
service endpoint interface. I have written my jaxrpc-mapping.xml, 
webservices.xml and ws4ee-deployment.xml (to map custom data types to 
appropriate deserializers). One of these methods is supposed to return an array 
of custom beans. I wrapped the array as a bean, which is something like:

  | public class MyArrayWrapper {
  |     private MyDataType[] underlyingArray;
  |     private String anotherField;
  |     //public no argument constructor
  |     //public getter/setters
  | }
  | 

I have additional methods inside the array (not getter/setters) which can be 
used by the session bean to resize the array dynamically and set the data at a 
particular index in the array, but I don't think that matters to the 
serializer. I use 
org.jboss.webservice.encoding.ser.MetaDataBeanSerializerFactory and 
org.jboss.webservice.encoding.ser.MetaDataBeanDeSerializerFactory to handle 
this array as well as the the MyDataType, which is a simple Java bean.

I use Java2WSDL to generate the WSDL, which looks like the following in its 
type mapping for the array.

  | <schema targetNamespace="http://myservice.session.mycompany.com"; 
xmlns="http://www.w3.org/2001/XMLSchema";>
  |    <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
  |    <complexType name="ArrayOf_tns3_MyDataType">
  |     <complexContent>
  |      <restriction base="soapenc:Array">
  |       <attribute ref="soapenc:arrayType" 
wsdl:arrayType="tns3:MyDataType[]"/>
  |      </restriction>
  |     </complexContent>
  |    </complexType>
  |   </schema>
  |   <schema targetNamespace="http://myservice.session.mycompany.com"; 
xmlns="http://www.w3.org/2001/XMLSchema";>
  |    <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
  |    <complexType name="MyArrayWrapper">
  |     <sequence>
  |      <element name="underlyingArray" nillable="true" 
type="impl:ArrayOf_tns3_MyDataType"/>
  |      <element name="anotherField" type="xsd:string"/>
  |     </sequence>
  |    </complexType>
  |   </schema>
  | 

Using rpc/LITERAL, the service deploys fine apart from a jaxrpc-warning about 
type mapping, which I do not understand because the package it complains about 
exists and is mapped in jaxrpc-mapping.xml. Anyway, that's a warning.

I use an Axis client (JRE 1.5 generated by JBoss IDE) to invoke the WS call. 
The call succeeds without any error on the server. I have Axis servlet logging 
turned on. The response SOAP message looks perfect with all the necessary data. 
The response array contains 28 elements (say) but the client only gets one 
element after deserializing the SOAP message. What's going wrong? Why is the 
array getting trimmed to one element?

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

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


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to