初窥IE8不为人知的秘密
2011-01-06 11:38
211 查看
本篇介绍XFire + Spring构建Web Services服务器端的第二种办法。
两种办法的不同之处在于:
第一种办法的ServletClass是org.codehaus.xfire.spring.XFireSpringServlet,这种办法服务的声明在Spring配置文件中完成,即applicationContext.xml文件中。
第二种办法的ServletClass是org.springframework.web.servlet.DispatcherServlet,这种办法需要另外在WEB-INF文件夹下新建一个XFireServlet-servlet.xml,服务声明在该文件中(和applicationContext.xml,web.xml在同一目录下),这里的XFireServlet是web.xml文件中servlet的名字,需要保持一致。
1、web.xml文件
<servlet>中的servlet-name可自己设定,但是{servlet-name}-servlet必须为新建xml文件的名字,如程序中servlet-name为XFireServlet,则新建的xml文件的名字为:XFireServlet-servlet.xml,而且该文件的路径需要加入<context-param>下面的<param-value>中。(这个地方见到有的例子并没有加入这个文件的路径,而是:classpath:org/codehaus/xfire/spring/xfire.xml,这点我没写例子实践。)
2、接口类和实现类
这个没什么特别的
3、配置applicationContext.xml文件
4、配置服务(XFireServlet-servlet.xml)
如果有多个服务,添加多个<entry></entry>即可
配置完成在浏览器中输入http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl 测试一下是否正常
两种办法的不同之处在于:
第一种办法的ServletClass是org.codehaus.xfire.spring.XFireSpringServlet,这种办法服务的声明在Spring配置文件中完成,即applicationContext.xml文件中。
第二种办法的ServletClass是org.springframework.web.servlet.DispatcherServlet,这种办法需要另外在WEB-INF文件夹下新建一个XFireServlet-servlet.xml,服务声明在该文件中(和applicationContext.xml,web.xml在同一目录下),这里的XFireServlet是web.xml文件中servlet的名字,需要保持一致。
1、web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/XFireServlet-servlet.xml, /WEB-INF/applicationContext.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </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> </web-app>
<servlet>中的servlet-name可自己设定,但是{servlet-name}-servlet必须为新建xml文件的名字,如程序中servlet-name为XFireServlet,则新建的xml文件的名字为:XFireServlet-servlet.xml,而且该文件的路径需要加入<context-param>下面的<param-value>中。(这个地方见到有的例子并没有加入这个文件的路径,而是:classpath:org/codehaus/xfire/spring/xfire.xml,这点我没写例子实践。)
2、接口类和实现类
package webservice; /** *HelloWorld的接口类. */ public interface HelloWorld { /** *对名字为name的人打招呼. *@paramname名字 *@return返回打招呼的字符串 */ String sayHelloWorld(String name); } 我们还需要建立一个对应的实现类,来实现sayHelloWorld的功能,该实现类即为HelloWorldImpl.java。该类的详细内容如下: package webservice; /** *HelloWorld的实现类. */ public class HelloWorldImpl implements HelloWorld { public String sayHelloWorld(String name) { String helloWorld = " hello, " + name; return helloWorld; } }
这个没什么特别的
3、配置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 id ="HelloWorldBean" class ="webservice.HelloWorldImpl" /> </ beans >
4、配置服务(XFireServlet-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预配置信息 --> < import resource ="classpath:org/codehaus/xfire/spring/xfire.xml" /> <! —定义访问的url-- > < bean class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" > < property name ="urlMap" > < map > < entry key ="/HelloWorldService.ws" > < ref bean ="HelloWorldService" /> </ 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 ="HelloWorldService" parent ="baseWebService" > <!-- 业务服务bean --> < property name ="serviceBean" ref ="HelloWorldBean" /> <!-- 业务服务bean的窄接口类 --> < property name ="serviceClass" value ="webservice.HelloWorld" /> </ bean > </ beans >
如果有多个服务,添加多个<entry></entry>即可
配置完成在浏览器中输入http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl 测试一下是否正常
相关文章推荐
- ios 开发界不为人知的秘密
- 爆米花不为人知的秘密
- linux下so动态库一些不为人知的秘密
- c++引用和指针,不为人知的秘密。
- linux下so动态库一些不为人知的秘密(上)
- Eclipse Debug不为人知的秘密
- android studio那些不为人知的秘密
- linux下so动态库一些不为人知的秘密(上)
- linux下so动态库一些不为人知的秘密
- linux下so动态库一些不为人知的秘密(上)
- 探求网页同步提交、ajax和comet不为人知的秘密(中篇)
- Android 一些不为人知的小秘密
- linux下so动态库一些不为人知的秘密(上)
- 诺基亚10个不为人知的秘密
- linux下so动态库一些不为人知的秘密(中)
- ie8中模拟ie7(emulate ie7)按钮的秘密
- wordpress建站小技巧:wp-config.php文件不为人知的秘密(一)
- Eclipse Debug不为人知的秘密
- 解密 【JavaScript Eval】不为人知的秘密
- linux下so动态库一些不为人知的秘密(上)