`
dycsos123ok
  • 浏览: 82714 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

*****cxf之Session会话问题*****

阅读更多

 

说明: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>  
 

 

 

分享到:
评论

相关推荐

    xfire开发的带session生命周期的webservice应用工程实例

    1. **会话标识符**:Web服务可能会通过请求头或者消息体传递一个唯一的Session ID,以便服务器识别特定的客户端会话。 2. **自定义会话管理器**:可能有一个自定义的会话管理类,该类负责创建、更新和销毁会话,以及...

    ssm+shiro+cxf

    **Apache Shiro** 是一个强大的安全框架,提供了身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)以及加密服务。在本项目中,Shiro被用来实现用户登录验证、权限控制以及角色...

    Drools5.3官网手册

    例如,可以使用 `&lt;drools:rulebase&gt;` 和 `&lt;drools:stateful-session&gt;` 元素来定义规则库和状态化会话。 - **事件监听器**(Event Listeners):讲解了如何使用 Spring 的依赖注入功能来配置 Drools 事件监听器,以...

    java web整合开发王者归来源代码2

    在这个目录中,开发者可以找到关于如何使用HttpSession对象存储和检索数据的示例,同时可能还会涉及到session的管理,如设置超时、会话复制和粘滞会话等。 4. **servlet**:Servlet是Java Web应用程序的核心部分,...

    Java Web整合开发王者归来随书光盘下build、src(5/5)

    1. **xfireDemo**:XFire是早期的一个SOAP服务框架,现在已被Apache CXF所取代。xfireDemo可能包含了一个使用XFire创建和消费Web服务的示例,帮助开发者了解如何在Java Web应用中实现服务接口和调用。 2. **Struts2...

    泰豪软件招聘笔试题(java)new201102

    - **session**: 表示用户的会话,用于存储特定用户的会话信息。 - **application**: 表示应用程序上下文,用于在整个Web应用范围内共享数据。 - **context**: 表示JSP页面的上下文环境,用于访问当前页面的上下文。 ...

    cfx webservice 入门 详细步骤

    `session-config` 部分设置了会话超时时间,即客户端无活动的会话将在60分钟后自动结束。 ```xml &lt;!-- web.xml 配置 --&gt; &lt;description&gt;Apache CXF Endpoint &lt;display-name&gt;cxf &lt;servlet-name&gt;cxf ...

    WebService开发指南

    3. **Session管理**:在分布式环境中,Axis2支持会话管理,确保跨多个WebService调用时的数据一致性。 4. **使用Spring的JavaBean发布WebService**:结合Spring框架,可以方便地将JavaBean转换为可发布的WebService...

    Java Web程序开发范例宝典 (源码) (上集)

    1. **Servlet技术**:Java Web的核心之一是Servlet,它是一种用于扩展服务器功能的Java类。在01至12的压缩文件中,可能包含了使用Servlet创建动态网页、处理HTTP请求和响应、实现会话管理以及过滤器等应用的示例。 ...

    《J2EE项目开发与设计》 彭灿华编著 铁道出版社源码

    可能包括session beans(会话bean)处理客户端交互,entity beans(实体bean)持久化数据,以及message-driven beans(消息驱动bean)处理JMS消息。 4. **MVC(Model-View-Controller)模式**:J2EE项目常采用MVC...

    j2ee开发架包

    主要有三种类型:Session Beans(会话bean)、Message Driven Beans(消息驱动bean)和Entity Beans(实体bean)。 4. **JMS(Java Message Service)**:JMS是Java平台上的消息传递标准,允许应用程序创建、发送、...

    ivr java网关

    6. **开发必备**:开发IVR网关时,开发者需要熟悉通信协议,如SIP(Session Initiation Protocol)用于建立和管理多媒体通信会话,以及TSP(Telephony Service Provider)接口,以便与电话网络交互。 7. **文档**:...

    Java SOA Cookbook源代码

    EJB可以是会话bean(Session Beans),用于处理客户端请求;实体bean(Entity Beans),用于持久化数据;或者消息驱动bean(Message-Driven Beans),用于处理JMS消息。 3. **Java Message Service (JMS)**:JMS是...

    ServicioWebSoapJAVA:Servicio Web Soap con EJB

    EJB组件包括会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-Driven Beans)。 4. **EJB与SOAP的结合**:在本项目中,EJB组件可能被用作业务逻辑层,处理复杂的计算或数据操作。SOAP ...

    JAVA面试题(中).pdf

    Web应用的会话跟踪技术主要有以下几种:URL重写、隐藏表单字段、Cookies和会话(Session)。URL重写通过在URL后面添加参数来跟踪用户会话,隐藏表单字段通过在表单中添加一个隐藏的字段来存储会话信息,Cookies是...

    ws-security java-mail

    尽管Xfire已被Apache CXF等更现代的框架取代,但其对`ws-security`的支持仍然展示了如何在实际项目中实现Web服务安全。这可能涉及到配置XML文件,定义安全策略,以及在服务调用中添加必要的安全头信息。 接下来,...

    ejb WebService

    EJB的核心组件包括会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message Driven Beans)。这些bean提供了业务逻辑,并能被远程客户端调用。 WebService是一种基于标准的、平台无关的通信...

Global site tag (gtag.js) - Google Analytics