`

CXF session问题

    博客分类:
  • CXF
 
阅读更多

说明:CXF作为Webservice很好的实现框架,让Webservice的开发变得极期方便(Xfire框架居说目前已经不再维护,使用越来越少了),然后在使用中也遇到很多细节问题,如Session会话问题就是其中一个,由于网上好多解决方法试了都不好用,最近刚刚解决了在此备份一下,以便以后使用方便。

 

一、建立Web工程,加入CXF的jar包,项目中使用的版本为cxf2.6.0。

 

 

二、定义两个接口IRegirstInfo、ILoginInfo; IRegirstInfo接口定一个注册方法,ILoginInfo定义一个登录方法。

 

 

Java代码 复制代码 收藏代码
  1. @WebService
  2. publicinterface IRegirstInfo {
  3. publicvoid UserRegirstInfo();
  4. }
  5. @WebService
  6. publicinterface ILoginInfo {
  7. public String UserLoginDao(String token);
  8. }
@WebService
public interface IRegirstInfo {
	public void UserRegirstInfo();
}



@WebService
public interface ILoginInfo {
	public String UserLoginDao(String token);
}

 

三、定义两个接口的实现类RegirstInfoService、UserLoginService ; RegirstInfoService服务类里生成一个Token信息,然后将它放到Session里,然后在UserLoginService 服务里我们从Session里取出这个Token信息。

 

 

Java代码 复制代码 收藏代码
  1. @WebService
  2. publicclass RegirstInfoService implements IRegirstInfo {
  3. @Resource
  4. private WebServiceContext wsContext;
  5. private MessageContext mc;
  6. private HttpSession session;
  7. publicvoid UserRegirstInfo() {
  8. // 获取上下文,保存request,session信息.
  9. mc = wsContext.getMessageContext();
  10. session = ((javax.servlet.http.HttpServletRequest) mc
  11. .get(MessageContext.SERVLET_REQUEST)).getSession();
  12. ((javax.servlet.ServletContext) mc.get(MessageContext.SERVLET_CONTEXT))
  13. .setAttribute("session", session);// 把session放到ServletContext中。
  14. String token = UUID.randomUUID().toString(); // 生成Token
  15. session.setAttribute("token", token); // 将生成的token放入Session
  16. //生成request,来获取客户端的IP
  17. HttpServletRequest request = (HttpServletRequest) mc
  18. .get("HTTP.REQUEST");
  19. System.out.println("request:" + request.getRemoteAddr());
  20. }
  21. }
@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());   
    }   
  
}  

 

 

Java代码 复制代码 收藏代码
  1. @webservice
  2. publicclass UserLoginService implements ILoginInfo {
  3. @Resource
  4. private WebServiceContext wsContext;
  5. private MessageContext mc;
  6. private HttpSession session;
  7. public String UserLoginDao(String token) {
  8. mc = wsContext.getMessageContext();
  9. session = (HttpSession) ((javax.servlet.ServletContext) mc
  10. .get(MessageContext.SERVLET_CONTEXT)).getAttribute("session");
  11. System.out.println("Token:" + session.getAttribute("token"));
  12. return"Success--->" + token;
  13. }
  14. }
@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

 

 

Xml代码 复制代码 收藏代码
  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>WEB-INF/beans.xml</param-value>
  4. </context-param>
  5. <listener>
  6. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  7. </listener>
  8. <display-name>cxf</display-name>
  9. <servlet>
  10. <servlet-name>cxf</servlet-name>
  11. <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  12. <load-on-startup>1</load-on-startup>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>cxf</servlet-name>
  16. <url-pattern>/*</url-pattern>
  17. </servlet-mapping>
<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是用来发布服务的

 

 

Xml代码 复制代码 收藏代码
  1. <importresource="classpath:META-INF/cxf/cxf.xml"/>
  2. <importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
  3. <importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>
  4. <!-- ===============具体服务实例============= -->
  5. <beanid="userLoginService"class="com.dyc.impl.UserLoginService"/>
  6. <beanid="regirstInfoService"class="com.dyc.impl.RegirstInfoService"/>
  7. <!-- ===============对外发布服务============= -->
  8. <jaxws:endpointid="loginService"implementor="#userLoginService"
  9. address="/LoginService">
  10. </jaxws:endpoint>
  11. <jaxws:endpointid="regirstService"implementor="#regirstInfoService"
  12. address="/RegirstService">
  13. </jaxws:endpoint>
分享到:
评论

相关推荐

    cxf使用中编码问题

    cxf使用中编码问题,有关于gbk等的编码问题在cxf中的解决方法

    apache-cxf-2.6.1最小依赖包

    apache-cxf-2.6.1最小依赖包,自测可用,请自行下载。本来想免费分享给各位,但是分数不能标0。另有cxf-2.7.18版本,链接如下:https://download.csdn.net/download/jxsczqh/10814176

    cxf-3.1.5 和 cxf-3.3.13 JAVA7和JAVA8对应CXF资源

    JAVA7和JAVA8对应CXF资源 WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- ...

    apache-cxf-2.7.7

    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源码 CXF源码:CXF_Spring源码

    Spring CXF Restful 实例

    Spring CXF Restful 实例

    cxf.xml,cxf-servlet.xml,cxf-extension-soap.xml

    &lt;import resource="classpath:META-INF/cxf/cxf.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-servlet.xml"/&gt;

    cxf的jar包.rar

    利用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源代码,样例,cxfdemo

    cxf服务端开发

    CXF(Webservice)开发手册

    CXF Webservice 开发手册

    cxf-core-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-core-3.0.1.jar; 赠送原API文档:cxf-core-3.0.1-javadoc.jar; 赠送源代码:cxf-core-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-core-3.0.1.pom; 包含翻译后的API文档:cxf-core-3.0.1-...

    用cxf开发webservice

    Apache CXF是一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息格式...

    cxf3.1.18.rar

    spring 4.2.0 集成的cxf3.1.18的jar包,cxf-core-3.1.18.jar、cxf-rt-bindings-soap-3.1.18.jar、cxf-rt-databinding-jaxb-3.1.18.jar、cxf-rt-frontend-jaxws-3.1.18.jar、cxf-rt-frontend-simple-3.1.18.jar、cxf-...

    Cxf转换器示例

    Web Service Cxf转换器的示例,包含源码和jar包。

    CXF-JAXB包的处理问题

    处理cxf版本和jaxb包中冲突问题,解决webservice中遇到的版本问题

    apache-cxf-2.7.7以及cxf客户端所需要的jar包

    apache-cxf-2.7.7以及cxf客户端所需要的jar包,命令生成webservice客户端

    apache-cxf-3.3.5

    Apache CXF is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS. These services can speak a variety of protocols such ...

    CXF客户端支持最少jar

    CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,

    apache-cxf-2.5.2

    apache-cxf-2.5.2

    cxf创建出现GBK编码问题解决的jar

    cxf创建客户端出现GBK编码问题解决的jar 评分: cxf在创建客户端出现编码GBK-不可映射字符的编码问题解决的jar

Global site tag (gtag.js) - Google Analytics