java程序调用远程webservice的疑问-熟悉cxf的进来
1.本地java工程一使用cxf起了个webservice服务,该服务的接口本地绝对路径为com.test.demo.HelloWorld;
2.本地java工程二将工程一的Helloworld接口和实现完整的拷贝过来,路径和工程一完全一致。
Client通过
org.apache.cxf.jaxws.JaxWsProxyFactoryBean使用映射获取HelloWord实例成功调用了
该webservice的sayHi(String name)方法。
疑问:工程二若想成功调用该webservice,必须将工程一的webservice服务helloworld完整的拷贝到本地,然后使用映射获取
实例才可完成调用,否则就会报classnotfound错误。
请问:webservice不是公布接口就可以任意调用的吗,若工程二
不将webservice代码拷贝到本地的话,根本无法调用;
实际上想在代码里调用webservice的人,不可能获取服务器的代码.
在只知道url的情况下,程序有办法调用该webservice吗?附上客户端访问代码如下:
public class HelloWorldClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
svr.setServiceClass(HelloWorld.class);
svr.setAddress("http://localhost:8080/helloWorld");
HelloWorld hw = (HelloWorld) svr.create();
User user = new User();
user.setName("Tony");
user.setDescription("test");
System.out.println(hw.sayHiToUser(user));
}
}
------解决方案--------------------有个 cilent.get.......然后返回的是一个 object[][]数组 这样 就不用你的这一句了
(HelloWorld) svr.create(); 强转了 你去找找吧 我记得是Clilent
------解决方案--------------------如果是客户端调用接口,建议使用HttpConnection的方式,有些客户端不支持Cxf的Jar包