说明:CXF作为Webservice很好的实现框架,让Webservice的开发变得极期方便(Xfire框架居说目前已经不再维护,使用越来越少了),然后在使用中也遇到很多细节问题,如Session会话问题就是其中一个,由于网上好多解决方法试了都不好用,最近刚刚解决了在此备份一下,以便以后使用方便。
一、建立Web工程,加入CXF的jar包,项目中使用的版本为cxf2.6.0。
二、定义两个接口IRegirstInfo、ILoginInfo; IRegirstInfo接口定一个注册方法,ILoginInfo定义一个登录方法。
@WebService
public interface IRegirstInfo {
public void UserRegirstInfo();
}
@WebService
public interface ILoginInfo {
public String UserLoginDao(String token);
}
三、定义两个接口的实现类RegirstInfoService、UserLoginService
; RegirstInfoService服务类里生成一个Token信息,然后将它放到Session里,然后在UserLoginService 服务里我们从Session里取出这个Token信息。
@WebService
public class RegirstInfoService implements IRegirstInfo {
@Resource
private WebServiceContext wsContext;
private MessageContext mc;
private HttpSession session;
public void UserRegirstInfo() {
// 获取上下文,保存request,session信息.
mc = wsContext.getMessageContext();
session = ((javax.servlet.http.HttpServletRequest) mc
.get(MessageContext.SERVLET_REQUEST)).getSession();
((javax.servlet.ServletContext) mc.get(MessageContext.SERVLET_CONTEXT))
.setAttribute("session", session);// 把session放到ServletContext中。
String token = UUID.randomUUID().toString(); // 生成Token
session.setAttribute("token", token); // 将生成的token放入Session
//生成request,来获取客户端的IP
HttpServletRequest request = (HttpServletRequest) mc
.get("HTTP.REQUEST");
System.out.println("request:" + request.getRemoteAddr());
}
}
@webservice
public class UserLoginService implements ILoginInfo {
@Resource
private WebServiceContext wsContext;
private MessageContext mc;
private HttpSession session;
public String UserLoginDao(String token) {
mc = wsContext.getMessageContext();
session = (HttpSession) ((javax.servlet.ServletContext) mc
.get(MessageContext.SERVLET_CONTEXT)).getAttribute("session");
System.out.println("Token:" + session.getAttribute("token"));
return "Success--->" + token;
}
}
四、web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<display-name>cxf</display-name>
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
五、还有一个bean.xml是用来发布服务的
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!-- ===============具体服务实例============= -->
<bean id="userLoginService" class="com.dyc.impl.UserLoginService" />
<bean id="regirstInfoService" class="com.dyc.impl.RegirstInfoService" />
<!-- ===============对外发布服务============= -->
<jaxws:endpoint id="loginService" implementor="#userLoginService"
address="/LoginService">
</jaxws:endpoint>
<jaxws:endpoint id="regirstService" implementor="#regirstInfoService"
address="/RegirstService">
</jaxws:endpoint>
分享到:
相关推荐
实战Web Service 之 CXF 实战Web Service 之 CXF
WebService之CXF开发指南WebService之CXF开发指南WebService之CXF开发指南
cxf使用中编码问题,有关于gbk等的编码问题在cxf中的解决方法
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...
CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载
CXF源码:CXF_Spring源码 CXF源码:CXF_Spring源码
JAVA7和JAVA8对应CXF资源 WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- ...
WebService之CXF开发指南
Spring CXF Restful 实例
cxf服务端开发
借鉴网上例子,弄了一个SpringBoot开发WebService之CXF示例。
WebService之CXF开发指南.rar
CXF Webservice 开发手册
Apache CXF是一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息格式...
WebService CXF 详细教程 加上自带CXF文件
利用Apache CXF开发webservice接口需要用到的jar集合 cxf-core-3.0.15.jar cxf-rt-bindings-soap-3.0.15.jar cxf-rt-bindings-xml-3.0.15.jar cxf-rt-databinding-jaxb-3.0.15.jar cxf-rt-frontend-jaxws-3.0.15.jar...
cxf-core-3.1.16版本jar包,用于java开发使用
2013版的 <基于Apache CXF构建SOA应用> 源码 Apache CXF是一个开放源码的Web服务框架,提供了一个易于使用,用于开发Web Services标准为基础的编程模型。本书主要介绍Apache CXF在构建SOA架构各个方面的应用说明和...
处理cxf版本和jaxb包中冲突问题,解决webservice中遇到的版本问题
Web Service Cxf转换器的示例,包含源码和jar包。