加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

SSH+Xfire+Proxool开发框架整合(二)

发布时间:2020-12-17 00:59:56 所属栏目:安全 来源:网络整理
导读:?? 上一篇我已经介绍了SSH+Xfire+Proxool的第一种整合方式,当然了这里主要体现了Xfire跟spring的整合。这里还拿前面的例子来说一下Xfire跟Spring的另外一种结合方式,代码基本上和上面一样,不同的地方主要体现在几个配置文件上,下面做些说明:? ?? ? 1、

?? 上一篇我已经介绍了SSH+Xfire+Proxool的第一种整合方式,当然了这里主要体现了Xfire跟spring的整合。这里还拿前面的例子来说一下Xfire跟Spring的另外一种结合方式,代码基本上和上面一样,不同的地方主要体现在几个配置文件上,下面做些说明:?

?? ? 1、在web-inf /的根目录下添加 xfire-servlet.xml 文件,用来定义webservice需要提供的接口。第一种结合方式不需要这个配置文件,而是把接口直接定义到了applicationContext.xml 里面的。

?? ? 2、在web.xml 里面

?? ? ? ?<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>/services/*</url-pattern>
</servlet-mapping>

?? ?//第一种结合是:

?? ? ??<servlet>
?? ?<servlet-name>XFireServlet</servlet-name>
?? ?<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>?
??</servlet>
??<servlet-mapping>
?? ?<servlet-name>XFireServlet</servlet-name>
?? ?<url-pattern>/services/*</url-pattern>
??</servlet-mapping>

?? 在Spring MVC框架中,每个DispatcherServlet有它自己的WebApplicationContext,这个context继承了根ApplicationContext的所有bean定义。在DispatcherServlet的初始化过程中,Spring会在web应用的WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml的配置文件,生成文件中定义的bean。上面例子的Spring默认配置文件为xfire-servlet.xml。

??3、关于org/codehaus/xfire/spring/xfire.xml文件的导入

这个可以写到web.xml 文件里面:?classpath:org/codehaus/xfire/spring/xfire.xml

还可以在xfire —servlet.xml 文件里面:?<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />

还可以在applicationContext.xml 里面:<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />

本例中是吧xfire.xml 的声明定义到了web.xml中了

上一篇是定义到了applicationContext.xml 里面的?

?? 下面还是贴贴代码吧:xfire-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 引入XFire预配置信息 ?这一句也可添加到web.xml ?的上下文中,tomcat 开启时进行加载
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />-->
<!--定义访问的url-->
<bean
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/Login"><!--此为服务名,即调用接口的名称http://*Login?WSDL-->
<ref bean="login" />
</entry>
</map>
</property>
</bean>
<!-- 这里一般都使用XFire导出器,但是本程序中没有这么做,原因可能是因为webservice只开放了一个接口
要是提供多个接口的话,用xfire的导出器还是比较方便的等省不少代码,这个在webservice04中有所体现 -->
<bean id="login"
class="org.codehaus.xfire.spring.remoting.XFireExporter">
<property name="serviceFactory">
<ref bean="xfire.serviceFactory" />
</property>
<property name="xfire">
<ref bean="xfire" />
</property>
<property name="serviceBean">
<ref bean="LoginDAOImpl" /><!--在 applicationContext.xml 中装配的类-->
</property>
<property name="serviceClass">
<value>com.easylife.dao.ILoginDAO</value><!-- 接口-->
</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是不一样的。
<bean id="login" parent="baseWebService">
业务服务bean?
<property name="serviceBean" ref="LoginDAOImpl" />
业务服务bean的窄接口类?
<property name="serviceClass" value="com.easylife.ILoginDAO" />
</bean>
-->
</beans>


applicationContext.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="/login" class="com.easylife.action.LoginAction"></bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
?? ? ? ?value="org.logicalcobwebs.proxool.ProxoolDriver" />
?? ?<property name="url" value="proxool.dbs" />
</bean>


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<!--加载tomcat的时候进行自动创建表,不加默认不会创建-->
<!--<prop key="hibernate.hbm2ddl.auto">create</prop>
-->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
<prop key="hibernate.connection.release_mode">after_statement</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/easylife/model/User.hbm.xml</value></list>
</property>
</bean>
<bean id="LoginDAOImpl" class="com.easylife.dao.LoginDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>

web.xml 文件:?

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?
?? http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--连接池proxool服务配置 start-->
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>/WEB-INF/classes/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--观察连接池proxool 管理信息,可以不用加载-->
<servlet>
<servlet-name>Admin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
<!--连接池proxool服务配置 end-->
<!--spring服务配置 start-->
<servlet>
<servlet-name>contextConfigLocation</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!--spring服务配置 end-->
<!--初始化系统配置文件 start-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml,
classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
</context-param>
<!--初始化系统配置文件 end-->
<!--struts 的配置 start-->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--struts 的配置 end-->


<!--xfire 和 sping 的结合 ?start-->
<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>/services/*</url-pattern>
</servlet-mapping>
<!--xfire 和 sping 的结合 ?end-->
</web-app>

?上面关于spring是否会根据** ?的名称去web-inf/下面去找相应的**-servlet.xml 的xfire的这个配置文件,我在另一个项目按照上面的配置方法来做老是报找不到**-servlet .xml 文件的异常,后来把

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
?? ? ? ? ? ? ?classpath*:applicationContext-*.xml,
?? ? ? ? ? ? ? ?/WEB-INF/xfire-servlet.xml
?? ? </param-value>

</context-param>

问题解决。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读