我在ubuntu下的jboss上部署了简单的“HelloWorld”Web服务。 我创建了简单的客户端,但我无法让它工作。每次运行客户端时都会收到NullPointerException。
请注意,我在Ubuntu下运行Oracle Java 7。
这是代码: HelloWorldClient.java
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class HelloWorldClient {
public static void main(String[] args){
URL url;
try {
url = new URL("http://localhost:8080/WebServiceProject/helloWorld?wsdl");
QName qname = new QName("http:///", "HelloWorldImplService");
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);
System.out.println(hello.sayHello("mkyong"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
HelloWorld.java
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
public String sayHello(String name);
}
堆栈跟踪:
Exception in thread "main" java.lang.NullPointerException
at com.sun.xml.internal.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1407)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:334)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:354)
at javax.xml.ws.Service.getPort(Service.java:188)
at HelloWorldClient.main(HelloWorldClient.java:18)
此行抛出异常:
HelloWorld hello = service.getPort(HelloWorld.class);
答案 0 :(得分:3)
我自己有几天同样的问题,因为我使用的WSDL文件(和服务)被移动到一个新的URL。我终于在这里找到了解决方案:
http://techtracer.com/2007/08/15/jax-ws-jaxp-tutorial-building-a-stockquote-web-service-client/
简而言之,在使用以下命令(在Windows / CygWin上)重新生成所有自动生成的java和类文件之后,所有(应该)都开始工作了
main(String[] argument)
我遇到了一些额外的麻烦,因为一些旧的文件被遗留下来并与新生成的文件冲突,但是在我将所有旧文件移动到回收站后,一切都慢慢开始工作。
答案 1 :(得分:0)
如果您的网络服务的实施与项目中的界面不同,也会发生这种情况。
如果你的项目中有HelloWorld.class声明Web服务端没有的某些方法,则getPort(HelloWorld.class)调用将引发空指针异常。
您可以仔细检查应用程序上的HelloWorld.class接口和Web服务本身的接口,以确保它们匹配。