Bonjour,
Je suis nouvelle en ce qui concerne Axis et depuis hier je deviens folle en essayant de trouver mon erreur!!!
Pourriez-vous me suggérer une solution?
Merci
Je ne sais pas les informations dont vous avez besoin... aussi je vous donne le programme server, le wsdd et le programme client. L'application est simple car je voulais seulement m'assurer que je pouvais obtenir une information avec AXIS... mais je ne peux pas!!
L'application est AIServicio.java qui contient une procédure de modification d'un paramètre. L'objet Output est retourne seulement un code d'erreur et l'erreur elle-même.
Le client est AIClient.java qui appelle cette procédure et écrit le resultat sur la page WEB-
==================================
J'utilise Axis 1-4 et Tomcat 5.1.9.
J'obtiens l'exception suivante:
No Deserializer found to deserialize a 'http://schemas.xmlsoap.org/soap/encoding/:string' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'.
SERVEUR
AI.wsdd:
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="http://135.88.100.235:8081/services/services/AI" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://135.88.100.235:8081/services/services/AI" xmlns:intf="http://135.88.100.235:8081/services/services/AI" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="urn:AI" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlnssd="http://www.w3.org/2001/XMLSchema">
- <!--
WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)
-->
- <wsdl:types>
- <schema targetNamespace="urn:AI" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
- <complexType name="Output">
- <sequence>
<element name="PError" type="xsd:int" />
<element name="SError" nillable="true" type="soapenc:string" />
</sequence>
</complexType>
</schema>
</wsdl:types>
- <wsdl:message name="AImodif_p1Request">
<wsdl:part name="p1_old" type="soapenc:string" />
<wsdl:part name="p1_new" type="soapenc:string" />
</wsdl:message>
- <wsdl:message name="AImodif_p1Response">
<wsdl:part name="AImodif_p1Return" type="tns1:Output" />
</wsdl:message>
- <wsdl:portType name="AIServicio">
- <wsdl:operation name="AImodif_p1" parameterOrder="p1_old p1_new">
<wsdl:input message="impl:AImodif_p1Request" name="AImodif_p1Request" />
<wsdl:output message="impl:AImodif_p1Response" name="AImodif_p1Response" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="AISoapBinding" type="impl:AIServicio">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="AImodif_p1">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="AImodif_p1Request">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://AI" use="encoded" />
</wsdl:input>
- <wsdl:output name="AImodif_p1Response">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://135.88.100.235:8081/services/services/AI" use="encoded" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="AIServicioService">
- <wsdl:port binding="impl:AISoapBinding" name="AI">
<wsdlsoap:address location="http://135.88.100.235:8081/services/services/AI" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
AIServicio.java
That contains a procedure AIModif_p1 (String p1_old, String p1_new). This procedure returns an Output object that contains the error code and the error message.
CLIENT
AICliente.java
import.....
public class AICliente extends HttpServlet
{
public AICliente() {}
private static URL url = null;
private static Call call = null;
private static SOAPMappingRegistry smr = null;
private static BeanSerializer beanSer = null;
private static Output output = null;
public static void soapInit() throws IOException
{
url = new URL("http://135.88.100.235:8081/services/services/AI");
call = new Call();
beanSer = new BeanSerializer();
smr = new SOAPMappingRegistry();
smr.mapTypes(Constants.NS_URI_SOAP_ENC,
new QName("urn:AI","Output"),
Output.class, beanSer, beanSer);
call.setSOAPMappingRegistry(smr);
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setTargetObjectURI("urn:AI");
output= new Output();
}
public static Output AImodif_p1( String p1_old, String p1_new)
throws IOException
{
System.out.println("Entewring Cliente AImodif_p1....");
System.out.println("p1_old="+p1_old+" p1_new="+p1_new);
soapInit();
call.setMethodName("AImodif_p1");
Vector params = new Vector();
try
{
params.addElement(new Parameter("p1_old",String.class,p1_old,null));
params.addElement(new Parameter("p1_new",String.class,p1_new,null));
call.setParams(params);
}
catch (Exception e)
{
output.setPError(-1);
output.setSError(e.getMessage());
System.out.println("ERROR: Generated fault: " + e.getMessage());
return output;
};
System.out.println("AImodif_p1.....Server answering ...");
Response resp=null; try
{
System.out.println("url="+url);
resp = call.invoke(url, "");
}
catch (SOAPException e)
{
System.out.println("SOAPException in client AImodif_p1...");
output.setPError(-1);
output.setSError(e.getMessage());
System.out.println("Caught SOAPException (" + e.getFaultCode() + "): [" +
e.getMessage()+"]");
return output;
} if (!resp.generatedFault())
{
Parameter ret = resp.getReturnValue();
output = (Output)ret.getValue();
}
else
{
Fault fault = resp.getFault();
output.setPError(-1);
output.setSError(resp.getFault().getFaultString());
System.out.println("ERROR: Generated fault: " + fault);
}
return output;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
PaintClient ps= new PaintClient();
String p1_old="/";
String p1_new = request.getParameter("p1_new");
out.println("<center>PARAMETER 1 </center>");
out.println(ps.PaintClientHtml("Modif p1", AImodif_p1(p1_old,p1_new)));
}
Partager