SSH与Webservice整合记录
一、首先搭好SSH框架:
1、 Struts:MyEclipse菜单栏MyEclipse——》Project Capabilities——》Add Struts Capabilities,选择版本Struts 1.3,ApplicationResources项去掉路径部分,最好也去掉下面的Install Struts TLDs复选框,完毕。
WEB-INF\web.xml配置文件(<servlet>要在<listener>后面)
<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>
2、 Hibernate:先配好数据库链接,然后菜单栏MyEclipse——》Project Capablilities——》Add Hibernate Capabilities,选版本Hibernate 3.1,库里就选Hibernate 3.2 Core Libraries,最后的Create SessionFactory class选项去掉,因为要用Spring来管理。
applicationContext.xml配置文件
<!-- 工厂对象 -->
<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"value="classpath:hibernate.cfg.xml">
</property>
</bean>
3、 Spging:菜单栏MyEclipse——》Project Capablilities——》Add Spging Capabilities,版本选Spring 2,库选核心库Spring 2.5 Core Libraries,OK
WEB-INF\web.xml配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
二、然后增加XFire部分:
1、 添加XFire库包:在工程目录下,打开.classpath文件,增加一行<classpathentrykind="con" path="melibrary.com.genuitec.eclipse.ws.xfire.MYECLIPSE_XFIRE_CORE"/>保存,然后到MyEclipse中刷新即可看到加载进来XFire库包了。
2、 添加必要的JAR包到WebRoot\WEB-INF\lib下面:数据库包如classes12-9i.zip、msbase.jar、mssqlserver.jar、msutil.jar,Spring Web包(如果搭spring框架时选了spring web包应该就有了)如spring-web.jar、spring-webmvc.jar。
3、 修改WEB-INF\web.xml配置文件,在<listener>后面增加<servlet>
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
还有映射配置
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
其中的<url-pattern>/services/*</url-pattern>表示WebService类要放到services目录下面,或者是说services目录下的东西都将作为WebService来处理,所以这个要注意跟struts下的东西分开来。如果需要把WebService类放到多个目录下面管理,则可以继续添加映射配置,如
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/service/servlet/*</url-pattern>
</servlet-mapping>
4、 在services目录下增加一个接口类TestServiceDao,
@WebService
publicinterfaceTestServiceDao{
//sayHello方法声明了Web服务对外暴露的接口
public String sayHello(String s);
注意:上面的“@WebService”注解标识是为了给applicationContext.xml配置文件里使用Jsr181方法的,如果不用Jsr181,可以去掉。
5、 在services目录下增加一个接口实现类TestServiceDaoImpl,
@WebService(serviceName="testWebService",endpointInterface="services.TestServiceDao")
publicclassTestServiceDaoImpl implementsTestServiceDao {
public String sayHello(String ss) {
// TODO Auto-generatedmethod stub
String str= "你输入的字符串是:"+ss;
System.out.println(str);
return str;
}
注意:上面的注解是为了给applicationContext.xml配置文件里使用Jsr181方法的,@WebService(serviceName="testWebService",endpointInterface="services.TestServiceDao"),其中serviceName表示WebService的注册名字,是暴露给第三方使用的名字,如果为空,则默认为接口类的名字,endpointInterface表示该WebService要实现的接口类全名。如果不使用Jsr181方法配置,可以去掉。
6、 配置applicationContext.xml中的<bean>,有两种方法:
第一种方法,用Jsr181方法,这种方法要求接口和实现类都必须有@WebService注解标识,另外这种方法好像在启动tomcat时加载时间较长:
<!--xfire和spring集成-->
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
<!-- 获得applicationContext中所有bean的JSR181 annotation -->
<bean id="webAnnotations"
class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations"/>
<bean id="jsr181HandlerMapping"
class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">
<property name="xfire" ref="xfire"/>
<property name="webAnnotations" ref="webAnnotations" />
</bean>
上面的是固定不变的,下面是每个WebService实现类都要增加的:
<!-- 要发布成web服务的bean -->
<bean id="test1" class="services.TestServiceDaoImpl"/>
第二种方法,普通方法:
<!--xfire和spring集成-->
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
上面的是固定不变的,下面是每个WebService实现类都要增加的:
<!-- 要发布成web服务的bean -->
<bean id="aaa" class="services.TestServiceDao"/>
<bean name="bbb" class="org.codehaus.xfire.spring.ServiceBean">
<property name="serviceBean" ref="aaa"/>
<property name="serviceClass"value="services.TestServiceDaoImpl "/>
</bean>
这种方法发布的WebService,其向外暴露的名字是接口类的名字TestServiceDao,不是bean的id号。
完毕,如果想知道有哪些WebService接口可以调用,启动tomcat后,在IE地址栏输入http://localhost:8080/工程名/services即可看到
摘自 huangjl2000w的专栏
最新文章
- XE1:使用SSMS创建Extended Events
- IM系统中聊天记录模块的设计与实现
- Tesseract-OCR text2image.exe [ x86 支持 XP ]
- CSS background 属性
- python类——黑板客老师课程学习
- DHCP工作过程
- css中内容生成器
- poj3037
- javascript-设置div隐藏
- Note | javascript权威指南[第六版] 第2章:词法结构
- android通过程序收起通知栏
- 在C中判断变量存储类型(字符常量/数组/动态变量)
- 解决win10系统以太网适配器的驱动程序可能出现问题
- jsp中button按钮单击莫名提交两次或刷新页面问题
- Python开发【第一篇】基础题目一
- 029_mount bind挂载
- MVC扩展HttpHandler
- Hadoop学习笔记05_HA
- vue饿了么学习笔记(1)vue-cli开启项目
- CTF-练习平台-Misc之 这么多数据包
热门文章
- elasticsearch 5.1 问题 ubuntu
- 2016-12-15 java开发工作中,尚未做的工作
- Oracle 异常处理汇总
- Sqlite小数作差,会减不尽?
- (AIDE)Android Eclipse JNI 调用 .so文件加载问题
- 用SysTick做的延时计时器
- 【学】jQuery的源码思路6——增加each,animaion,ajax以及插件机制
- C#矩阵运算类库
- Windows下Apache配置域名
- XE7 &; IOS开发之开发账号(3):证书、AppID、设备、授权profile的申请使用,附Debug真机调试、Ad hoc下iPA文件生成演示(XCode5或以上版本推荐,有图有真相)