WebServiceException: Undefined port type
abcd1234 Mar 29, 2009 11:04 AMI am new to Web Services with JBoss. A client is connecting to an EJB3 based Web Service With JBoss AS 5 and JDK 6 using JAX-WS. I am stuck with the following exception. Some jars might be missing in the classpath for the client. If it is the case , which ones ?
I have verified that Jboss has correctly deployed the Web Service.
Exception in thread "main" javax.xml.ws.WebServiceException:Undefined port type: {http://webservice.samples/}HelloRemoteat com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:300)at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:306)at javax.xml.ws.Service.getPort(Service.java:161)at samples.client.BeanWSClient.getPort(BeanWSClient.java:44)at samples.client.BeanWSClient.main(BeanWSClient.java:35)
BeanWSClient.java (client is a different project than EJB3 WS):
package samples.client; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import samples.webservice.HelloRemote; public class BeanWSClient { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub String endpointURI ="http://127.0.0.1:8080/SampleWSEJBProject/HelloWorld?wsdl"; String helloWorld = "Hello world!"; Object retObj = getPort(endpointURI).echo(helloWorld); System.out.println(retObj); } private static HelloRemote getPort(String endpointURI) throws MalformedURLException { QName serviceName = new QName("http://www.openuri.org/2004/04/HelloWorld", "HelloWorldService"); URL wsdlURL = new URL(endpointURI); Service service = Service.create(wsdlURL, serviceName); return service.getPort(HelloRemote.class); } }
HelloRemote.java:
package samples.webservice; import javax.jws.WebService; @WebService public interface HelloRemote { public String echo(String input);}
HelloWorld.java:
package samples.webservice; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; /** * Session Bean implementation class MyBean */ @WebService(name = "EndpointInterface", targetNamespace = "http://www.openuri.org/2004/04/HelloWorld", serviceName = "HelloWorldService")@SOAPBinding(style = SOAPBinding.Style.RPC)@Remote(HelloRemote.class) @Stateless public class HelloWorld implements HelloRemote { /** * @see Object#Object() */ @WebMethod public String echo(String input) { return input; }}