WebServices client not working - Cannot obtain wsdl service
miafiste Dec 5, 2009 5:27 AMHi all,
I don't know to do call at the web service frim Struts application.
ActionForm
package contrat;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
public class ContratBean extends org.apache.struts.action.ActionForm {
private String nameContrat;
private String descriptionContrat;
public String getNameContrat() {
return nameContrat;
}
public void setNameContrat(String nameContrat) {
this.nameContrat = nameContrat;
}
public String getDescriptionContrat() {
return descriptionContrat;
}
public void setDescriptionContrat(String descriptionContrat) {
this.descriptionContrat = descriptionContrat;
}
public String getTypeContrat() {
return typeContrat;
}
public void setTypeContrat(String typeContrat) {
this.typeContrat = typeContrat;
}
private String typeContrat;
public ContratBean () {
}
public void reset(ActionMapping actionMapping, HttpServletRequest request) {
// TODO: Write method body
this.nameContrat="";
this.descriptionContrat="";
this.typeContrat="";
}
public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest request) {
// TODO: Write method body
ActionErrors errors = new ActionErrors();
return errors;
}
}
Action
package contrat;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import contratwsmanager.WSManager;
import contratwsmanager.WSManager;
public class ContratFormAction extends org.apache.struts.action.Action {
// Global Forwards
public static final String GLOBAL_FORWARD_start = "start";
// Local Forwards
public static final String FORWARD_sucessContrat = "sucessContrat";
public ContratFormAction() {
}
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO: Write method body
WSManager wsmanager = null;
ContratBean contratData = (ContratBean) (form);
String test = "";
try
{
wsmanager = new WSManager();
test = wsmanager.WSManagerAddContrat();
contratData.setNameContrat(test);
}
catch (Exception e) {
// TODO: handle exception
e.getStackTrace();
}
String nameContrat = contratData.getNameContrat();
return mapping.findForward(FORWARD_sucessContrat);
}
}WSManager
package contratwsmanager;
import java.util.Vector;
import org.apache.log4j.Category;
import javax.xml.soap.*;
import javax.xml.rpc.ServiceFactory;
import java.net.URL;
import javax.xml.namespace.QName;
public class WSManager
{
public WSManager()
{
}
// define a static category variable so that it references the
// category instance of the same name as this class.
//static final Category category = Category.getInstance(WSManager.class.getName());
static {
// Setup the global JAXM message factory
System.setProperty("javax.xml.soap.MessageFactory",
"org.jboss.ws.core.soap.MessageFactoryImpl");
}
public String WSManagerAddContrat() throws Exception {
//Method level variables
String nameContrat;
String retour ="";
try
{
javax.xml.rpc.ServiceFactory factory = javax.xml.rpc.ServiceFactory.newInstance();
QName serviceName = new QName("http://contrat.com.ws", "gestionContrat");
QName portName = new QName("http://contrat.com.ws", "ConduiteContrat");
URL wsdlLocation = new URL("http://localhost:8080/ConduiteContrat/ConduiteContrat?WSDL");
javax.xml.rpc.Service service = factory.createService(wsdlLocation, serviceName);
javax.xml.rpc.Call call = service.createCall(serviceName, portName);
retour = (String) call.invoke(new Object [] { "coucou" });
}
catch(javax.xml.rpc.ServiceException se) {
se.printStackTrace();
}
catch(Exception e) {
//Print the exception in the console
e.printStackTrace();
throw e;
}
return retour;
}
}
This is my error
10:52:37,359 INFO [TilesRequestProcessor] Tiles definition factory found for request processor ''.
10:52:37,562 ERROR [STDERR] java.lang.IllegalArgumentException: Cannot obtain wsdl service: {http://contrat.com.ws}gestionContrat
10:52:37,562 ERROR [STDERR] at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaDataInternal(JAXRPCClientMetaDataBuilder.java:171)
10:52:37,562 ERROR [STDERR] at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaData(JAXRPCClientMetaDataBuilder.java:133)
10:52:37,562 ERROR [STDERR] at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaData(JAXRPCClientMetaDataBuilder.java:85)
10:52:37,562 ERROR [STDERR] at org.jboss.ws.core.jaxrpc.client.ServiceImpl.<init>(ServiceImpl.java:109)
10:52:37,562 ERROR [STDERR] at org.jboss.ws.core.jaxrpc.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:155)
10:52:37,562 ERROR [STDERR] at org.jboss.ws.core.jaxrpc.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:126)
10:52:37,562 ERROR [STDERR] at contratwsmanager.WSManager.WSManagerAddContrat(WSManager.java:44)
10:52:37,562 ERROR [STDERR] at contrat.ContratFormAction.execute(ContratFormAction.java:35)
10:52:37,562 ERROR [STDERR] at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
10:52:37,562 ERROR [STDERR] at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
10:52:37,562 ERROR [STDERR] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
10:52:37,562 ERROR [STDERR] at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
10:52:37,562 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
10:52:37,562 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
10:52:37,562 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
10:52:37,562 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
10:52:37,562 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
10:52:37,562 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
10:52:37,562 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
10:52:37,562 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
10:52:37,562 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
10:52:37,562 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
10:52:37,562 ERROR [STDERR] at java.lang.Thread.run(Thread.java:619)
My WSDL
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/ wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://contrat.com.ws" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="gestionContrat" targetNamespace="http://contrat.com.ws" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:p="http://schemas.xmlsoap.org/wsdl/http/"> <wsdl:types> <xsd:schema targetNamespace="http://contrat.com.ws" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="toContrat"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="toContratResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="toContratRequest"> <wsdl:part element="tns:toContrat" name="parameters"/> </wsdl:message> <wsdl:message name="toContratResponse"> <wsdl:part element="tns:toContratResponse" name="parameters"/> </wsdl:message> <wsdl:portType name="ConduiteContrat"> <wsdl:operation name="toContrat"> <wsdl:input message="tns:toContratRequest"/> <wsdl:output message="tns:toContratResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="ConduiteContratSOAP" type="tns:ConduiteContrat"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="toContrat"> <soap:operation soapAction="http://contrat.com.ws/toContrat" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="ConduiteContratService"> <wsdl:port binding="tns:ConduiteContratSOAP" name="gestionContratSOAP"> <soap:address location="http://localhost:8080/ConduiteContrat/ConduiteContrat"/> </wsdl:port> </wsdl:service> </wsdl:definitions>