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>