CXF 学习 (一)

为了了解WebService,在网上找了组视频连续的看了几天,收获良多。
基本上对JAX-WS接口规范基础有所了解,以及Java开发Webservice的整体步骤。
视频资源地址:[url]http://www.verycd.com/topics/2917293/[/url]
确实将得挺好的,可以学习下。

看完我就想找个框架了解下,由于CXF可以与Spring无缝整合,就选择其作为入口。
下面是我的第一个实例:

--服务器端

1.导入Web项目所需要的jar包

2.web.xml文件的编写
	<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/cxftest/*</url-pattern>
</servlet-mapping>


3.编写接口Login接口
package com.example.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public interface Login {
@WebMethod
public String login(@WebParam(name="name") String name, @WebParam(name="password")String password);

}


4.编写接口的实现类LoginImpl (注意Annotation的配置)
package com.example.service.impl;

import javax.jws.WebService;

import com.example.service.Login;

@WebService(endpointInterface="com.example.service.Login",serviceName="Login")
public class LoginImpl implements Login {

public String login(String name, String password) {
String result = "登录CXF服务器成功。。。";
if(!"cxf".equalsIgnoreCase(name) || !"cxf".equalsIgnoreCase(password)){
return "账号密码错误。";
}
return result;
}

}


5.创建一个Servlet实例(InitServlet)来发布接口
package com.example.startup;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.example.service.impl.LoginImpl;

public class InitServlet extends HttpServlet {

public void init() throws ServletException {
LoginImpl loginImpl = new LoginImpl();

JaxWsServerFactoryBean jaxFactory = new JaxWsServerFactoryBean();
jaxFactory.setAddress("/Login");
jaxFactory.setServiceClass(LoginImpl.class);
jaxFactory.setServiceBean(loginImpl);
jaxFactory.create();
System.out.println("InitServlet...");
}

}


6.InitServlet在Web.xml中的配置
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.example.startup.InitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>InitServlet</servlet-name>
<url-pattern>/init</url-pattern>
</servlet-mapping>

7.在浏览器地址栏中输入http://localhost:8080/cxf_002/cxftest/Login?wsdl
出现wsdl的xml文件信息。

--客户端测试代码
1.在服务开启的情况下使用wsimport工具根据生成客户端代码
(wsimport -d d:/service/04 -keep -verbose http://localhost:8080/cxf_002/cxftest/Login?wsdl)
或者使用CXF 自带的工具wsdl2java (wsdl2java -d:/service/04 -client http://localhost:8080/cxf_002/cxftest/Login?wsdl)

2.将impl包中的Login.java拷贝至测试客户端中

3.使用Main方法测试接口的实现
package com.example.start;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.example.service.impl.Login;


public class LoginTest {
public static void main(String[] args) {
JaxWsProxyFactoryBean jaxFactory = new JaxWsProxyFactoryBean();
jaxFactory.setAddress("http://localhost:8080/cxf_002/cxftest/Login?wsdl");
jaxFactory.setServiceClass(Login.class);
Login login = (Login)jaxFactory.create();
String result = login.login("cxf", "cxf");
System.out.println("结果:"+result);
}
}


下面附上示例源码(注意需要引入CXF的jar文件):
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值