记录一下cxf-webservice的脚手架搭建

之前只是用CXF完成了WS-Security/policy的一些工作,CXF使用了WSS4J完成了相关的功能,其实是WSS4J通过CXF提供的interceptor机制完成了这些功能。

最近又要实现WS Server的应用,就搭建了一下,helloWorld程序已经上传到Github
https://github.com/wwwcomy/cxf_test

pom里面的Spring是为了测试spring4.2的兼容性加上的,尽管cxf-core其实原本就有对Spring的引用,但是引用方式都是provided,所以必须得自己再加上Spring

除了cxf-core就是cxf-rt-transports-http这个component了,CXF提供了多种Transports的支持,包括HTTP,JMS,Local,甚至webSocket。但是实际应用中一般都是基于HTTP的,所以在这里就用了这个引用。另外Pom里面还加入了其他的不知名引用,我找了半天也没找到对所有引用的介绍,这里就不深入看了。感觉如果能完全理解transports,databinding应该就可以了。

另外,cxf的wsdl2java功能可以直接生成client代码或者server代码,client这块就不说了,直接能使用。server的代码使用如下方式:
wsdl2java -d d:/src -server -impl http://localhost:8080/soap_server/ws/HelloWorld?wsdl


注意那个impl参数能让CXF生成一个默认的空实现。

以前一直以为webservice必须要跑在容器里面,其实不是的,如果把那个wsdl下到本地,用如下方式生成代码:
wsdl2java -d d:/src -server -impl c:/HelloWorld.wsdl

生成的代码是包括一个main方法的,main方法能直接跑,生成的main方法如下:

public class IHelloService_HelloServicePort_Server{

protected IHelloService_HelloServicePort_Server() throws java.lang.Exception {
System.out.println("Starting Server");
Object implementor = new HelloServicePortImpl();
String address = "http://localhost:8081/soap_server/ws/HelloWorld";
Endpoint.publish(address, implementor);
}

public static void main(String args[]) throws java.lang.Exception {
new IHelloService_HelloServicePort_Server();
System.out.println("Server ready...");

Thread.sleep(5 * 60 * 1000);
System.out.println("Server exiting");
System.exit(0);
}
}



除此之外,java自带的wsimport 也能方便的生成client代码。具体方法可以搜索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值