cxf学习用wsdl创建接口的使用
来源:互联网 发布:qq飞车穿梭者数据 编辑:程序博客网 时间:2024/06/07 00:21
先得到一个服务器端发布的wsdl文件,解析创建一个接口,然后通过该接口以及wsdl中的发布的地址创建客户端,在调用接口的方法即可调用服务器上的方法。
1、先在自己的机子上简单的发布一个服务。
webservice的类
package com.gg.webservice.cxf.server;
import javax.jws.WebService;
@WebService
public class HelloWorldService{
public String sayHello(@WebParam(name="userName")String userName) {
return "Hello,"+userName;
}
}
2、发布服务的类
package com.gg.webservice.cxf.server;
import javax.xml.ws.Endpoint;
public class Service {
public static void main(String[] args) {
System.out.println("Starting Server");
HelloWorldServiceI helloWorldService = new HelloWorldService();
String address = "http://localhost:9999/helloWorldService";
Endpoint.publish(address, helloWorldServicel);
System.out.println("Start success");
}
}
运行发布类之后访问http://localhost:9999/helloWorldService?wsdl即可看到自己发布的服务的wsdl了,接下来就可以根据该wsdl来自己创建接口来建个客户端来访问服务器了。
从xs:element中可以看到它提供的接口函数有一个有返回值的sayHello()
从<xs:complexType name="sayHello">中可以得到 参数列表,在此例子中sayHello函数有一个String类型的参数。
从<xs:complexType name="sayHelloResponse">中可以知道sayHello有一个String类型的返回值。
接下来我们就可以建一个含有该方法的接口;
1、接口类
package com.gg.webservice.cxf.client;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface Hello {
public String sayHello(@WebParam(name="userName") String userName);
}
2、连接服务器的类
package com.gg.webservice.cxf.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
public class Client {
public static void main(String[] args) throws Exception {
/**根据wsdl建一个接口来调用创建service**/
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(Hello.class);
factory.setAddress("http://localhost:9999/helloWorldService");
Hello service = (Hello) factory.create();
System.out.println(service.toString());
System.out.println(service.sayHello("gg"));
}
}
其中factory.setAddress("http://localhost:9999/helloWorldService"); 从wsdl中<soap:address location="http://localhost:9999/helloWorldService"/>可以得到.
出现的错误:
他妈的这个错误害我花了一个上午的时间才找到原因。
原因:包名弄错了,程序找不到wsdl的对应的service
解决方法:把Hello接口的包名改为package com.gg.webservice.cxf.server;
总结:在创建接口时主要其包名要是wsdl中targetNamespace="http://server.cxf.webservice.gg.com/">中对应的包名。
- cxf学习用wsdl创建接口的使用
- curl的使用,学习用
- 自己学习用的
- 学习用的网站
- 学习用的网站
- 学习用的网址
- 方便学习用的
- 使用CXF+spring创建一个web的接口项目
- 使用CXF+spring+restful创建一个web的接口项目
- 使用CXF+spring+restful创建一个web的接口项目
- 使用CXF+spring+restful创建一个web的接口项目
- 使用CXF+spring+restful创建一个web的接口项目
- QT中日期的使用(自我学习用)
- 使用apache-cxf生成wsdl的客户端文件并使用
- 学习用的好网址
- 学习用的相关网址
- MVC的学习用PPT
- acm学习用的网站
- 第三方开发者服务——什么是推送
- 异常、常用类、GUI、正则
- EL&JSTL表达式语言使用
- JVM指令2
- memset用法小结
- cxf学习用wsdl创建接口的使用
- Struts环境下jsp引用css js 路径问题
- URAL 1971 Graphics Settings 取对数(高精度易超时)
- 解决Android SDK Manager不能下载更新SDK的问题
- 牛腩-.NET类头注释
- 《使至塞上》 王维
- TS流文件中提取I帧的方法
- 在rails中不同的view不同皮肤下的js,css,注入js和css到head区域
- S5PV210(TQ210)学习笔记——内核移植与文件系统构建