一個簡單的webService

1.建立接口類java

@WebService
public interface Hello {
    String sayHi(@WebParam(name="name")String name);
}api

2.實現接口類app

@WebService(endpointInterface = "com.test.Hello",
        serviceName = "Hello")
public class HelloImpl implements Hello {
    public String sayHi(String name) {
        return "hello,"+name;
    }
}ide

3.發佈ui

public class ServiceMain {

    public static void main(String[] args) throws Exception{
        System.out.print("Starting Service...");
        String address = "http://localhost:8888/hello";
        HelloImpl helloImpl = new HelloImpl();
        Endpoint.publish(address,helloImpl);
    }
}spa

4.訪問:http://localhost:8888/hello?wsdl,以下成功.net

問題code

執行main方法時候有可能出現如下錯誤,聽說是JDK版本所致:server

Starting Service...Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class com.test.jaxws.SayHi is not found. Have you run APT to generate them?
    at com.sun.xml.internal.ws.model.RuntimeModeler.getClass(RuntimeModeler.java:256)
    at com.sun.xml.internal.ws.model.RuntimeModeler.processDocWrappedMethod(RuntimeModeler.java:567)
    at com.sun.xml.internal.ws.model.RuntimeModeler.processMethod(RuntimeModeler.java:514)
    at com.sun.xml.internal.ws.model.RuntimeModeler.processClass(RuntimeModeler.java:341)
    at com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:227)
    at com.sun.xml.internal.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:308)
    at com.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:174)
    at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:420)
    at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:439)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(EndpointImpl.java:208)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:138)
    at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:92)
    at javax.xml.ws.Endpoint.publish(Endpoint.java:170)
    at com.test.ServiceMain.main(ServiceMain.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Process finished with exit code 1xml

解決方法:

給接口類的sayHi()方法加上:  

@SOAPBinding(style=SOAPBinding.Style.RPC)

相關文章
相關標籤/搜索