论坛首页 Java企业应用论坛

Spring2.5+Hibernate3.2+xfire开发webservice工程

浏览 4636 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-02-04  
<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

 首先声明看本案例需要对spring Hibernate有初步了解,否则可能会比较吃力。

按照顺序添加相应的框架。

先添加spring,不用多说什么吧?应该都会的。如果不知道添加什么包,全部选上行了。够简单吧。

然后添加Hibernate,配置文件使用spring的。不需要创建HibernateSessionFactory。呵呵

然后添加xfire。也不是很困难呀。添加就行了。在这里呢。就要说几句了,最好是把xfire相应的包考到工程lib下面,否则你会很郁闷的。先不说了,按照正常的思路来配置吧。添加好了,你会发现

web.xml中增加了

 

这些是XFire的配置文件,删掉就行了,要不你还要改东西,是不是还缺少点什么呢,对啦,缺少spring的配置文件,现在需要将下面的代码拷贝到配置文件中

    <!-- begin Spring配置 -->
    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml</param-value>
    </context-param>
    <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     <listener> 
       <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>
    <!-- end Spring配置 -->

    <!-- begin XFire 配置 -->
    <servlet>   
       <servlet-name>xfire</servlet-name>   
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>   
    <servlet-mapping> 
       <servlet-name>xfire</servlet-name>
       <url-pattern>*.ws</url-pattern>
    </servlet-mapping>
    <servlet>
       <!-- 配合Spring容器中XFire一起工作的Servlet-->
       <servlet-name>xfireServlet</servlet-name>
       <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>xfireServlet</servlet-name>
       <!-- 在这个URI下开放Web Service服务 -->
       <url-pattern>/service/*</url-pattern>
    </servlet-mapping>
    <!-- end XFire 配置 -->

 

这段配置文件是完整的啦,呵呵,拷贝上去就行了。

然后需要在/WEB-INF/目录下 创建xfire-servlet.xml文件备用。

文件内的内容

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<!--将来所有的web服务信息就要写在这里了。-->

</beans>

 

好了,现在部署项目了,基本上我们的webservice服务已经搭建好了,启动tomcat吧。

哈哈,是不是发现报错啦,这个原因是因为xfire中默认已经为我们封装了 spring-1.2.6.jar 这么一个jar包,比较累的法子就是自己从tomcat中将这个jar包删掉,比较省事的呢就是新建一个工程,手动为项目添加xfire框架,我是用的后者,前者比较简单,就是在发布的时候比较麻烦,需要每次都去删除这个jar包,当然这里就不普及手动搭建框架的知识了,自己上网查资料吧。

好啦,spring-1.2.6.jar包删掉了,在启动,是不是正常了?

OK,现在我们的web服务系统 已经基本上搭建完成了,是不是该添加个类测试一下了,好说干就干。

到这里就需要重新提提那些话题了,本资料不是普及spring+Hibernate的,所以就不做太详细的介绍了

还是最简单的helloworld,新建一个helloworld吧

 

新建接口

public interface HelloWorld {
public String hello(String name);
}

 

新建类并实现接口

public class HelloworldImpl implements HelloWorld {
    public String hello(String name){
        return name+" say: helloWorld!!!";
    }
}

 

spring配置文件

<bean id="HelloworldI" class="HelloworldImpl"><!--依然还是很简单。-->

 

厉害的就在xfire-servlet.xml文件中了,现在贴上内容,下面大部分信息是固定的,基本上拷贝上去就能用了。

<!-- 引入XFire预配置信息 -->
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
<!-- 定义访问的url -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="urlMap">             
    <map>
    <!-- 显示WebService 访问路径,有几个路径就需要 配置几个路径。 -->
     <entry key="/Helloworld.ws">                  
      <ref bean="HelloworldWS" /><!--与下面的是对应的。-->            
     </entry>
    </map>
   </property>
</bean>

<!-- 使用XFire导出器 -->
<bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
   <!-- 引用xfire.xml中定义的工厂 -->
   <property name="serviceFactory" ref="xfire.serviceFactory" />
   <!-- 引用xfire.xml中的xfire实例 -->
   <property name="xfire" ref="xfire" />
</bean>
<bean id="HelloworldWS" parent="baseWebService"><!-- 服务请求的地址,与上面访问的url地址是对应的 -->
   <!-- 业务服务bean --><!-- 我定义的接口的实现类 -->
   <property name="serviceBean" ref="HelloworldI" /><!--与spring配置文件中的是对应的-->
   <!-- 业务服务bean的窄接口类 --><!-- 我定义的接口 -->
   <property name="serviceClass" value="HelloWorld" /><!--接口,实现类的接口-->
</bean>

 

Ok,现在就可以发布我们的工程了,http://localhost:8080/webservice/service/HelloWorld?wsdl然后访问这个地址看看是否成功吧。

需要说明的是,这个项目中没有使用到Hibernate,又需要的自行使用即可,我在这里就不做介绍了,因为我相信看这个帖子的朋友应该对ssh框架有过初步的了解了已经。如果实在不懂的话可以hi我或者Q我均可。

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics