jdk自带的jax-ws(java api xml webservice)发布webservice,jdk1.6版本有问题,如果要实现发布,导入cxf的jar包。
webservice发布的3个步骤
1、写接口
2、实现这个接口
3、发布服务
两个类具有相同的 XML 类型名称 "{http://liyang.yinhai.com/}addResponse"。请使用 @XmlType.name 和
@XmlType.namespace 为类分配不同的名称。
当报出这个错误的时候是由于你根据wsdl2java或者wsimport产生的本地文件包路径不统一,所以排除这个错误就直接将包括包再内一起复制进来。
wsimport的一些命令-p用来指定包。从上面的那错就知道这个命令的重要性了。要不然换包就不容易了
-keep 生产java文件,否则只有class文件。
-verbose 生成详细信息。
-d 指定文件保存路径
第一种调用:
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
URL url=new URL("http://127.0.0.1:8888/ns?wsdl"); QName qname=new QName("http://liyang.yinhai.com/", "IMyserviceImplService"); Service service=Service.create(url,qname); IMyservice ms=service.getPort(IMyservice.class);//这个是依赖了本地产生代码的接口。
这几个的调用完全依赖jdk就可以了,不需要cxf的jar包。
第二种调用:
@Test public void testImpl() throws MalformedURLException { IMyserviceImplService ms=new IMyserviceImplService();//这个是依赖了本地产生代码的一个类, System.out.println("识别wsimport"+ms.getIMyserviceImplPort().add(1, 2));//这个类的一个方法getIMyserviceImplPort返回类型调用
}