前面曾讲过cxf的webservice搭建,但客户端的代码依赖与服务端。这给我带来了很多不便。因此这里来说下不依赖服务端的客户端搭建。
服务端大致与上讲不变,需要更改处下面会提示。
首先重新搭建客户端,只有一个测试类,Test.java代码如下:
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
public class Test {
public static void main(String str[]) throws Exception {
JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
Client client = clientFactory.createClient("http://localhost:8080/WebService/HelloService?wsdl");
Object[] result = client.invoke("sayHello", "lml");
System.out.println(result[0]);
}
}
导入相关jar包,这里我只用到了2个jar,如下图:
[img]http://dl2.iteye.com/upload/attachment/0101/9816/883cc0b8-02eb-38e0-a497-ef5e9015164e.png[/img]
运行后可能出现下面错误:
[img]http://dl2.iteye.com/upload/attachment/0101/9818/d146cc2a-6c82-3f8e-86ae-3eeb7e49d8e7.png[/img]
出现这个原因是因为没有使用正确的jre包,在我的java文件夹下有2个文件,使用jdk下的jre文件,注意tomcat与eclipse都需要使用该jre。
当我导完文件后,又出现个新问题,问题如下:
[img]http://dl2.iteye.com/upload/attachment/0101/9822/2684427d-e54c-30b4-8df7-0310c7d17be5.png[/img]
我在下面两个博客上得到提示:http://pangsir.iteye.com/blog/1492508 http://lost-alien.iteye.com/blog/1175859
更改服务端代码,在实现类下加入targetNamespace标签,代码如下:
import javax.jws.WebService;
import com.lml.ws.service.Hello;
@WebService([color=red]targetNamespace="http://service.ws.lml.com/",[/color]endpointInterface = "com.lml.ws.service.Hello")
public class HelloImpl implements Hello {
public String sayHello(String name) {
return name + " say hello!";
}
}
运行结果,结果正确:
[img]http://dl2.iteye.com/upload/attachment/0101/9826/400731f3-acdb-3738-9d9b-21bb26d5544f.png[/img]
源码下载地址:http://download.youkuaiyun.com/detail/l540151663/8039763
服务端大致与上讲不变,需要更改处下面会提示。
首先重新搭建客户端,只有一个测试类,Test.java代码如下:
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
public class Test {
public static void main(String str[]) throws Exception {
JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
Client client = clientFactory.createClient("http://localhost:8080/WebService/HelloService?wsdl");
Object[] result = client.invoke("sayHello", "lml");
System.out.println(result[0]);
}
}
导入相关jar包,这里我只用到了2个jar,如下图:
[img]http://dl2.iteye.com/upload/attachment/0101/9816/883cc0b8-02eb-38e0-a497-ef5e9015164e.png[/img]
运行后可能出现下面错误:
[img]http://dl2.iteye.com/upload/attachment/0101/9818/d146cc2a-6c82-3f8e-86ae-3eeb7e49d8e7.png[/img]
出现这个原因是因为没有使用正确的jre包,在我的java文件夹下有2个文件,使用jdk下的jre文件,注意tomcat与eclipse都需要使用该jre。
当我导完文件后,又出现个新问题,问题如下:
[img]http://dl2.iteye.com/upload/attachment/0101/9822/2684427d-e54c-30b4-8df7-0310c7d17be5.png[/img]
我在下面两个博客上得到提示:http://pangsir.iteye.com/blog/1492508 http://lost-alien.iteye.com/blog/1175859
更改服务端代码,在实现类下加入targetNamespace标签,代码如下:
import javax.jws.WebService;
import com.lml.ws.service.Hello;
@WebService([color=red]targetNamespace="http://service.ws.lml.com/",[/color]endpointInterface = "com.lml.ws.service.Hello")
public class HelloImpl implements Hello {
public String sayHello(String name) {
return name + " say hello!";
}
}
运行结果,结果正确:
[img]http://dl2.iteye.com/upload/attachment/0101/9826/400731f3-acdb-3738-9d9b-21bb26d5544f.png[/img]
源码下载地址:http://download.youkuaiyun.com/detail/l540151663/8039763