Dear Tom-san,
Thank you for your quick reply, and sorry for my late reply.
Now, I understand that the Locale of java is not proper for the Axis.
I'll change the Locale of java to the String of java, perhaps.
Thank you for your kindness.
Best Regards.

----- Original Message -----
Do not include Java specific types like this in the function signature of a web 
service.  Remember, a client which is NOT 
Java should be able to use your service.  A better approach would be to take a 
string that is a standard name of a locale 
(i.e. "en_US") that you define as part of the contract for your service.

Do not think of web services as a form of Java RMI or RPC - you use a web 
service when you would like to publish a 
service that *any* language or script can use, or even someone who is hand 
coding XML and POSTing it to the service.  
*Objects* are not transmitted over the network connect, *data* is.

I hope that gets you on the right track.

Tom Jordahl

-----Original Message-----
From: Norio Sasagawa [mailto:n-sasag...@ka2.so-net.ne.jp]
Sent: Saturday, April 25, 2009 9:53 AM
To: axis-dev@ws.apache.org
Subject: No serializer found for class java.util.Locale in registry 
org.apache.axis.encoding.typemappingdeleg...@6025e7

Dear all,

please help me.
i'm using Tomcat V6.0 and Axis 1.4.
i've got a mapping error.
when putting a Loacle parameter, a mapping error occurred.
when omitting a Locale parameter, no error occurred and it works fine.
what should i do ?

Best Regards.


Stack trace are below.

        {http://xml.apache.org/axis/}stackTrace:java.io.IOException: [en]-(No 
serializer found for class
java.util.Locale in registry 
org.apache.axis.encoding.typemappingdeleg...@6025e7)
        at 
org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
        at 
org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
        at 
org.apache.axis.encoding.SerializationContext.outputMultiRefs(SerializationContext.java:1055)
        at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145)
        at 
org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
        at 
org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
        at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
        at 
org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:554)
        at org.apache.axis.Message.getContentType(Message.java:486)
        at 
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:343)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)

        at 
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at TestClient.TestClient.main(TestClient.java:81)

        {http://xml.apache.org/axis/}hostname:FM-B05870457267

java.io.IOException: [en]-(No serializer found for class java.util.Locale in 
registry org.apache.axis.encoding.typemappingdeleg...@6025e7)
        at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
        at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
        at 
org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:554)
        at org.apache.axis.Message.getContentType(Message.java:486)
        at 
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:343)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)

        at 
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at TestClient.TestClient.main(TestClient.java:81)
Caused by: java.io.IOException: [en]-(No serializer found for class 
java.util.Locale in registry 
org.apache.axis.encoding.typemappingdeleg...@6025e7)
        at 
org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
        at 
org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
        at 
org.apache.axis.encoding.SerializationContext.outputMultiRefs(SerializationContext.java:1055)
        at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145)
        at 
org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
        at 
org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
        ... 16 more
Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: [en]-(No serializer found for class java.util.Locale in registry 
org.apache.axis.encoding.typemappingdeleg...@6025e7)
 faultActor:
 faultNode:
 faultDetail:
        {http://xml.apache.org/axis/}stackTrace:java.io.IOException: [en]-(No 
serializer found for class
java.util.Locale in registry 
org.apache.axis.encoding.typemappingdeleg...@6025e7)
        at 
org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
        at 
org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
        at 
org.apache.axis.encoding.SerializationContext.outputMultiRefs(SerializationContext.java:1055)
        at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145)
        at 
org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
        at 
org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
        at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
        at org.apache.axis.SOAPPart.getContentLength(SOAPPart.java:229)
        at org.apache.axis.Message.getContentLength(Message.java:510)
        at 
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:371)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)

        at 
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at TestClient.TestClient.main(TestClient.java:81)

        {http://xml.apache.org/axis/}hostname:FM-B05870457267

java.io.IOException: [en]-(No serializer found for class java.util.Locale in 
registry org.apache.axis.encoding.typemappingdeleg...@6025e7)
        at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
        at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
        at org.apache.axis.SOAPPart.getContentLength(SOAPPart.java:229)
        at org.apache.axis.Message.getContentLength(Message.java:510)
        at 
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:371)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)

        at 
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at TestClient.TestClient.main(TestClient.java:81)
Caused by: java.io.IOException:  [en]-(No serializer found for class 
java.util.Locale in registry 
org.apache.axis.encoding.typemappingdeleg...@6025e7)
        at 
org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
        at 
org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
        at 
org.apache.axis.encoding.SerializationContext.outputMultiRefs(SerializationContext.java:1055)
        at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145)
        at 
org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
        at 
org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
        ... 16 more

-----<.jws>-----
import java.lang.Object;
import java.util.Locale;
public class TestTest2Locale {
    public String TestTestShowName(String inputString, Locale locale) {
      Locale localeWork = locale.getDefault();
      return("Norio Sasagawa" + localeWork);
    }
    public String TestTestEchoName(String inputString, Locale locale) {
      Locale localeWork = locale.getDefault();
      return(inputString + localeWork);
    }
}

-----<.wsdl>-----
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://DefaultNamespace"; 
xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:impl="http://DefaultNamespace"; xmlns:intf="http://DefaultNamespace";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<!--WSDL Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT) / [en]-(WSDL created by Apache Axis 
version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT))-->

   <wsdl:message name="TestTestShowNameRequest">

      <wsdl:part name="in0" type="soapenc:string"/>

      <wsdl:part name="in1" type="xsd:anyType"/>

   </wsdl:message>

   <wsdl:message name="TestTestShowNameResponse">

      <wsdl:part name="TestTestShowNameReturn" type="soapenc:string"/>

   </wsdl:message>

   <wsdl:message name="TestTestEchoNameResponse">

      <wsdl:part name="TestTestEchoNameReturn" type="soapenc:string"/>

   </wsdl:message>

   <wsdl:message name="TestTestEchoNameRequest">

      <wsdl:part name="in0" type="soapenc:string"/>

      <wsdl:part name="in1" type="xsd:anyType"/>

   </wsdl:message>

   <wsdl:portType name="TestTest2Locale">

      <wsdl:operation name="TestTestShowName" parameterOrder="in0 in1">

         <wsdl:input message="impl:TestTestShowNameRequest" 
name="TestTestShowNameRequest"/>

         <wsdl:output message="impl:TestTestShowNameResponse" 
name="TestTestShowNameResponse"/>

      </wsdl:operation>

      <wsdl:operation name="TestTestEchoName" parameterOrder="in0 in1">

         <wsdl:input message="impl:TestTestEchoNameRequest" 
name="TestTestEchoNameRequest"/>

         <wsdl:output message="impl:TestTestEchoNameResponse" 
name="TestTestEchoNameResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="TestTest2Locale.javaSoapBinding" 
type="impl:TestTest2Locale">

      <wsdlsoap:binding style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="TestTestShowName">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="TestTestShowNameRequest">

            <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="http://DefaultNamespace"; use="encoded"/>

         </wsdl:input>

         <wsdl:output name="TestTestShowNameResponse">

            <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="http://DefaultNamespace"; use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

      <wsdl:operation name="TestTestEchoName">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="TestTestEchoNameRequest">

            <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="http://DefaultNamespace"; use="encoded"/>

         </wsdl:input>

         <wsdl:output name="TestTestEchoNameResponse">

            <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="http://DefaultNamespace"; use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="TestTest2LocaleService">

      <wsdl:port binding="impl:TestTest2Locale.javaSoapBinding" 
name="TestTest2Locale.java">

         <wsdlsoap:address 
location="http://localhost:8080/axis/TestTest2Locale.java"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>


-----<client test code>-----
package TestClient ;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

import java.util.Locale;
import java.io.Serializable;

public class TestClient implements Serializable
{
   public static void main(String [] args) throws Exception {
       Options options = new Options(args);

       String endpoint = "http://localhost:"; + options.getPort() +
                         "/axis/TestTest2Locale.jws";

       args = options.getRemainingArgs();

       if (args == null || args.length > 2) {
           System.err.println("Usage: TestClient 
<TestTestShowName|TestTestEchoName> arg1-1 ");
           return;
       }

       String method = args[0];
       if (!(method.equals("TestTestShowName") || 
method.equals("TestTestEchoName"))) {
           System.err.println("Usage: TestClient 
<TestTestShowName|TestTestEchoName> arg1-2 ");
           return;
       }

       String sTring = new String(args[1]);
       Locale localeString = new Locale("jp");

       Service  service = new Service();
       Call     call    = (Call) service.createCall();

       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
       call.setOperationName( new QName( endpoint, method ));
       call.addParameter( "in0", XMLType.XSD_STRING, ParameterMode.IN );
       call.addParameter( "in1", XMLType.XSD_ANYTYPE, ParameterMode.IN );
       call.setReturnType( XMLType.XSD_STRING );

       System.err.println("endpoint:" + endpoint);
       System.err.println("method  :" + method);
       System.err.println("sTring  :" + sTring);
       System.err.println("locale  :" + localeString);


       String ret = (String) call.invoke( new Object [] { sTring, localeString 
});
       System.out.println("Name : " + ret);
   }
}



Reply via email to