anonymous wrote : | To me it look like the wsrunclient simply provides a classpath for simple (i.e. Service.create) invocations |
I have problems with Service.create() too using JBoss 4.0.5GA, latest EJB3 and JBossWS packages. When I start my client I catch the following exception: | javax.xml.ws.WebServiceException: java.lang.IllegalArgumentException: Cannot obt | ain wsdl service: HelloService | at javax.xml.ws.Service.create(Service.java:731) | at com.imnet.oam.ws.HelloClient.<init>(HelloClient.java:13) | at com.imnet.oam.ws.HelloClient.main(HelloClient.java:27) | Caused by: java.lang.IllegalArgumentException: Cannot obtain wsdl service: Hello | Service | at org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.buildM | etaDataInternal(JAXWSClientMetaDataBuilder.java:131) | at org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.buildM | etaData(JAXWSClientMetaDataBuilder.java:85) | at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.<init>(ServiceDelegat | eImpl.java:140) | at org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelegate(Provid | erImpl.java:61) | at javax.xml.ws.Service.<init>(Service.java:83) | at org.jboss.ws.core.jaxws.client.ServiceExt.<init>(ServiceExt.java:60) | at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) | | at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct | orAccessorImpl.java:39) | at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC | onstructorAccessorImpl.java:27) | at java.lang.reflect.Constructor.newInstance(Constructor.java:494) | at javax.xml.ws.Service.create(Service.java:726) | ... 2 more | This is the WSLD generated while deploying the EJB3 web service: | <definitions name='HelloService' targetNamespace='http://mypc:8080' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://mypc:8080' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> | <types> | <xs:schema targetNamespace='http://mypc:8080' version='1.0' xmlns:xs='http://www.w3.org/2001/XMLSchema'> | <xs:element name='sayHello' nillable='true' type='xs:string'/> | <xs:element name='sayHelloResponse' nillable='true' type='xs:string'/> | </xs:schema> | </types> | <message name='Hello_sayHello'> | <part element='tns:sayHello' name='sayHello'/> | </message> | <message name='Hello_sayHelloResponse'> | <part element='tns:sayHelloResponse' name='sayHelloResponse'/> | </message> | <portType name='Hello'> | <operation name='sayHello' parameterOrder='sayHello'> | <input message='tns:Hello_sayHello'/> | <output message='tns:Hello_sayHelloResponse'/> | </operation> | </portType> | <binding name='HelloBinding' type='tns:Hello'> | <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> | <operation name='sayHello'> | <soap:operation soapAction=''/> | <input> | <soap:body use='literal'/> | </input> | <output> | <soap:body use='literal'/> | </output> | </operation> | </binding> | <service name='HelloService'> | <port binding='tns:HelloBinding' name='HelloPort'> | <soap:address location='http://mypc:8080/HelloService/Hello'/> | </port> | </service> | </definitions> | The client code follows: | package org.me.ws; | | import java.net.URL; | import javax.xml.namespace.QName; | import javax.xml.ws.Service; | | public class HelloClient { | private static final String SERVICE_NAME = "HelloService"; | private static final String WSDL_LOCATION = "http://mypc:8080/HelloService/HelloService?wsdl"; | private Service service; | | public HelloClient() throws Exception { | service = Service.create(new URL(WSDL_LOCATION), new QName(SERVICE_NAME)); | } | | public String getMessage() { | Hello hello = null; | | hello = service.getPort(Hello.class); | return hello.sayHello("Jim"); | } | | public static void main(String[] args) { | HelloClient client = null; | | try { | client = new HelloClient(); | System.out.println(client.getMessage()); | } catch (Throwable t) { | t.printStackTrace(); | } | } | } | and finally the service implementation class code follows: | package com.imnet.oam.ws; | | import javax.jws.*; | import javax.jws.soap.SOAPBinding; | import javax.ejb.Stateless; | | @Stateless | @WebService(name="Hello", targetNamespace="http://mypc:8080", serviceName="HelloService") | @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) | public class Hello { | private String message = new String("Hello, "); | | @WebMethod | public String sayHello(String name) { | return message + name + "."; | } | } | The WSDL file is easily accessible using the internet browser or throught the http://localhost:8080/jbossws/services links. I tried to call my service in many different way, changing it's name or targetName but the results are similar. Any ideas? Thank you View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4054722#4054722 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4054722 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
