java示例Web服务以 "java.lang.NullPointerException"启动,如何修复?

标签 java web exception service nullpointerexception

我从互联网上获得了一个简单的 Java Web 服务示例程序:

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import java.util.Date;

@WebService
interface IService {
    void hello(@WebParam(name="username") String username);
}

@WebService(targetNamespace = "ServiceImpl", endpointInterface="IService")
class ServiceImp implements IService{
    @Override
    public void hello(@WebParam(name = "username") String username) {
        System.out.println("hello " + username + " now is " + new Date());
    }
}

public class ServiceMain {
    public static void main(String[] args) {
        String address = "http://localhost:7777/myService";
        Endpoint.publish(address, new ServiceImp());
        System.out.println("OK");
    }
}

编译并运行时出现异常:

Exception in thread "main" java.lang.NullPointerException
at com.sun.xml.internal.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1618)
at com.sun.xml.internal.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1584)
at com.sun.xml.internal.ws.server.EndpointFactory.create(EndpointFactory.java:226)
at com.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:144)
at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:563)
at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:545)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(EndpointImpl.java:308)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:231)
at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:126)
at javax.xml.ws.Endpoint.publish(Endpoint.java:240)
at ServiceMain.main(ServiceMain.java:22)

那么这段代码片段哪里出错了,如何修复呢? 非常感谢。

最佳答案

您必须提供端点接口(interface)的完全限定名称。如果您想丢失端点接口(interface),请尝试此操作。

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import java.util.Date;


interface IService {
    void hello(String username);
}

@WebService(targetNamespace = "ServiceImpl")
class ServiceImp implements IService{

    public void hello(@WebParam(name = "username") String username) {
         System.out.println("hello " + username + " now is " + new Date());
    }
}

public class ServiceMain {
    public static void main(String[] args) {
        String address = "http://localhost:7777/myService";
        Endpoint.publish(address, new ServiceImp());
        System.out.println("OK");
    }
}

否则,假设您的端点接口(interface)位于名为 your.pkg 的包中,请尝试此操作。

package your.pkg;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import java.util.Date;

@WebService
interface IService {
    void hello(String username);
}

@WebService(targetNamespace = "ServiceImpl", endpointInterface="your.pkg.IService")
class ServiceImp implements IService{

    public void hello(@WebParam(name = "username") String username) {
         System.out.println("hello " + username + " now is " + new Date());
    }
}

public class ServiceMain {
    public static void main(String[] args) {
        String address = "http://localhost:7777/myService";
        Endpoint.publish(address, new ServiceImp());
        System.out.println("OK");
    }
}

我能够使用这两种方法运行它,并开始从端点获取 WSDL:- http://localhost:7777/myService?wsdl

关于java示例Web服务以 "java.lang.NullPointerException"启动,如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943701/

相关文章:

java - Drools 未按预期工作。规则不适用

html - 资源被解释为样式表但使用 MIME 类型 text/html 传输不知道出了什么问题

javascript - Atmosphere 框架断开

python - 忽略在库中抛出和捕获的异常

java - 如何附加到 Java 异常?

java - 我收到 "unreported exception ioexception; must be kept or declared to be thrown"

警告对话框中的 Java FX 自定义图片

java - 如何修复 Symja 中的精度?

java - 写入 `double...` 而不是 `[] double`

ios - 如何在 FireBase 上设置网页?