HI all,

I've found a solution. When one uses useOriginalWsdl the package to namespace 
mappings are read from the services.xml file (see ServiceBuilder.java method 
processTypeMappings). The problem is when classes are out of the target 
namespace. All we have to do is to write the mappings in the services.xml file.

In my case there are:

<packageMapping>
    <mapping packageName="dev.axis2.ws.data" 
qName="http://data.ws.axis2.dev/xsd"/>
</packageMapping>

Salutations,

Jose


Jorge Fernandez <[EMAIL PROTECTED]> escribió: Hola Jose,

I usually have those problems when using rampart but only with classes that 
extend from others.

Regards,

Jorge Fernández


Jose Luis Alba <[EMAIL PROTECTED]> escribió: Hi Mike,

The InputData and OutputData are simple JavaBean classes as:

package dev.axis2.ws.data;

public class InputData {
    private String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

Recently I've tried with the last snapshot and with the Axis2 1.3 RC1 that 
Deepal proposed to me.

Now the SOAP response has changed  to:

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
  <soapenv:Body>
    <ns:testDataResponse xmlns:ns="http://service.ws.axis2.dev";>
      <ns:return type="dev.axis2.ws.data.OutputData">
        <ns:data>datos  de entrada</ns:data>
      </ns:return>
    </ns:testDataResponse>
  </soapenv:Body>
</soapenv:Envelope>

The solution is near but not sufficient. The return element that encloses the 
data element now has a type attribute but the client continues to launch an 
unexpected subelement exception due to incorrect namespace for data.

- I generated the clients in ADB mode.

Any more ideas? I will continue investigating..

Thanks all

Jose

Mike Patton <[EMAIL PROTECTED]>  escribió: Jose,
   
  Does your OutputData class extend a java collection object or similar data 
type? If so, then this is why you are getting such an error. You should return 
a single element; even if you have an array or so to  return, wrap that in a 
property of another class and return that other type instead.
  Hope that helps.
   
  Mike
   
   
   
   
   
   
  

Jose Luis Alba <[EMAIL PROTECTED]> wrote:
  Hi,

-  I'm using Axis2 1.2

I've create a POJO  test web service that resides in package 
dev.axis2.ws.service and uses in/out bean data from package dev.axis2.ws.data. 

The  interface is:

package dev.axis2.ws.service;

import dev.axis2.ws.data.InputData;
import dev.axis2.ws.data.OutputData;

public interface TestService {
    public OutputData testData(InputData input);
}

1) When I use automatic wsdl generation from Axis (in the services.xml file) 
all goes well. Here is the SOAP response of the execution:

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
  <soapenv:Body>
    <ns:testDataResponse  xmlns:ns="http://service.ws.axis2.dev/xsd";>
      <ns:return>
        <data  xmlns="http://data.ws.axis2.dev/xsd";>datos de entrada</data>
          </ns:return>
      </ns:testDataResponse>
   </soapenv:Body>
</soapenv:Envelope>

2) Things goes wrong when I use the parameter useOriginalWsdl in the 
services.xml file. Here the services.xml file:

<service name="TestService">
  <messageReceivers>
    <messageReceiver
      mep="http://www.w3.org/2004/08/wsdl/in-only";
      class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    <messageReceiver
       mep="http://www.w3.org/2004/08/wsdl/in-out";
      class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
  </messageReceivers>
  <parameter  locked="false" 
name="ServiceClass">dev.axis2.ws.service.TestServiceImpl</parameter>
  <parameter locked="false" name="useOriginalwsdl">true</parameter>
  <parameter locked="false"  name="modifyUserWSDLPortAddress">true</parameter>
</service>

The SOAP response I receive in the client side is:

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
  <soapenv:Body>
    <ns:testDataResponse xmlns:ns="http://service.ws.axis2.dev/xsd";>
      <ns:return>
        <ns:data>datos de entrada</ns:data>
       </ns:return>
    </ns:testDataResponse>
  </soapenv:Body>
</soapenv:Envelope>

In this case the namespace for the data element (it should map to 
http://data.ws.axis2.dev/xsd)  is missing and the client throws and Unexpected 
subelement exception.

I have tried:

- Axis2 1.2
- Axis2 1.1.1
- Axis2 last snapshot
- Using the wsdl  generated automatically
- Using the wsld generated by axis2 tools (ant task and by command line)

In all cases the behavior is the same: Unexpeted subelement and the missing 
namespace in the response message.

Could you help me please? Thanks in advance!

Jose Luis


    
---------------------------------
  
Sé un Mejor Amante del Cine
¿Quieres saber cómo? ¡Deja que otras personas te ayuden! .


        

---------------------------------
Get the free Yahoo! toolbar and rest assured with the added security of spyware 
protection.  
          

---------------------------------

Sé un Mejor Amante del Cine
¿Quieres saber cómo? ¡Deja que otras personas te ayuden! .

          

---------------------------------

Sé un Mejor Amante del Cine
¿Quieres saber cómo? ¡Deja que otras personas te ayuden! .


       
---------------------------------

Sé un Mejor Amante del Cine
¿Quieres saber cómo? ¡Deja que otras personas te ayuden!.

Reply via email to