SSH整合xfire开发web应用

这个工程运用struts2+spring2+hibernate3架构,工程需要开放一个webservice接口供其它客户端调用并操作数据库,因此采用了xfire集成工程里,因为xfrie能和spring方便地集成.xfire的集成、拦截器等全部调试通过,现在最大的问题就是webservice怎么来获取工程里的session方便验证用户是否处于登陆状态呢?

xfire开发的webservice的主要文件:
接口类:
package com.jcurrent.ws.inf;

public interface SnsServiceInf {
    public String example(String message);
}

实现类:
package com.jcurrent.ws.service;

import java.util.List;

import com.jcurrent.bean.TestBean;
import com.jcurrent.dao.HibernateSuperDAO;
import com.jcurrent.ws.inf.SnsServiceInf;
/**
*接口类集成了数据库操作,这个webservice开放给用户对远程数据库进行操作
**/
public class SnsService extends HibernateSuperDAO<TestBean> implements SnsServiceInf{
    public String example(String message) {
        List<TestBean> list=this.getAll();
        return message+";总记录数是:"+list.size();
    }
}

拦截器:
package com.jcurrent.ws.handler;

import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;

import javax.servlet.http.HttpServletRequest;
import org.codehaus.xfire.transport.Session;
import org.codehaus.xfire.transport.http.XFireServletController;
import org.codehaus.xfire.transport.http.XFireHttpSession;

/**
*拦截器用于身份验证,接收客户端的用户信息,在拦截器里进行身份验证,验证通过后需要获取web应用的session
**/
public class MyHandler extends AbstractHandler{

    public void invoke(MessageContext context) throws Exception {
        String uri=context.getInMessage().getUri();
        Element handler=context.getInMessage().getHeader();
        HttpServletRequest request=XFireServletController.getRequest(); //得到客户端调用的信息
        XFireHttpSession session=new XFireHttpSession(request); //这里产生了webservice的session
       /**
         ** 怎么获取web应用的session,做到webservice和ssh应用共享session还没有研究透彻,有好方法的朋友提醒下
         ** xfire和spring集成的文档看了N遍,没有这方面的描述
        **/
       
        if(handler!=null){
            String token=handler.getChild("token").getValue();
            Session sess=context.getSession();
            sess.put("token", token);
            System.out.println(sess.get("token").toString());
            System.out.println("session-username=:");
        }else{
            System.out.println("请求必须包含验证信息!!");
        }
    }
}

spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans default-autowire="no" default-lazy-init="false" default-dependency-check="none">
    <!--xfire和spring集成-->
     <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
     <bean id="snsServiceBean" class="com.jcurrent.ws.service.SnsService">
       <property name="sessionFactory" ref="sessionFactory"/>
     </bean>
    <bean id="myHandler" class="com.jcurrent.ws.handler.MyHandler"/>
    <bean name="snsService" class="org.codehaus.xfire.spring.ServiceBean">
       <property name="serviceBean" ref="snsServiceBean"/>
       <property name="serviceClass" value="com.jcurrent.ws.inf.SnsServiceInf"/>
       <property name="inHandlers">
          <list><ref bean="myHandler"/></list>
       </property>
    </bean>
</beans>

web.xml配置文件:
     <!-- begin XFire 配置 -->
<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
             <!--看清楚这个XFireSpringServlet,集成到spring里用这个servlet,别用错了-->
</servlet>
<servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值