使用这个必须是使用JDK8及以下版本
真正解决方案:java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
添加链接描述
1. wsdl配置详解
要生成wsdl,首先得有一个ws,我们还是使用前面文章中提到的那个简单的ws,如下:
@WebService //默认静态方法是不能发不成ws服务的
public class MyWebService {
public String sayHello(String name) {
return name + " 你好!";
}
public static void main(String[] args) {
InetAddress address = InetAddress.getLocalHost();//获取的是本地的IP地址 //PC-20140317PXKX/192.168.0.121
String hostAddress = address.getHostAddress();//192.168.0.121
System.out.println(hostAddress);
String address1 = "http://" + hostAddress + "/9090/ws";
Endpoint.publish(address1, new MyWebService());
System.out.println("访问WSDL的地址为:" + address1 + "?WSDL");
}
}
运行一下,即可开启ws服务,请求http://192.168.10.1:6666/ws?WSDL即可看到wsdl页面,接下来分析一下该wsdl文件中与上面程序中的对应关系,看下图(为了清晰的展示,图我就不缩小了):
我们可以看到,生成的ws服务名称是在原来的类后面有加了个Service而已,服务类型名是在原来的类后面加了个Port,包括参数默认为arg0,返回值为return 等等,这些都能从wsdl文件中看的出来,通过这个wsdl生成的java代码中的类名自然也就是默认的了,如果我们想要修改这些默认的配置,则需要在编写ws的时候通过注解来设置一下。
2. 使用注解修改wsdl配置
我们修改一下上面的ws,使用注解来配置我们自己需要的名称,如下