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

XFire webservice 服务端开发(一)

发布时间:2020-12-17 01:07:10 所属栏目:安全 来源:网络整理
导读:转载:http://www.cnblogs.com/boogle/archive/2008/09/20/1294924.html 网上介绍XFire方面的文章已经很多了,我主要是介绍一下与Spring开发的集成,做个例子,抛块砖吧。 ? 个人感受:先谈个人感受,可以更加明确和了解开发中的思路,XFire与Spring可以说得


转载:http://www.cnblogs.com/boogle/archive/2008/09/20/1294924.html


网上介绍XFire方面的文章已经很多了,我主要是介绍一下与Spring开发的集成,做个例子,抛块砖吧。
?
个人感受:先谈个人感受,可以更加明确和了解开发中的思路,XFire与Spring可以说得上绝配,如果你开发所采用的架构是SSH模式,或者有Spring框架,那么你就正常开发,不要管web service,你只需要明白哪个类是用于web service的,并且在Spring测试通过,你的web service服务端开发可以说基本搞定。
?
说明:
我写这文章主要是说明开发过程及给个例子,并不是讲web service 协议或者spring开发。我有时间可以写点这方面的内容。
?
开发环境:
1,JDK 1.6.0
2,Eclipse JEE 3.4,外加XFire eclipse plugin(主要用于客户端开发)。
3,tomcat-5.5.26
4,SoapUI 主要用于测试。
5,下载xfire-distribution-1.2.6.zip,pjl-comp-filter-1.6.6.zip(用于传输压缩)
需求:
对外提供一个表的增删改查。
?
开发步骤:
1,建立web开发环境。
2,拷贝需要采用的依赖包。
3,开发业务功能。
4,配置Spring。
5,配置web service。
6,测试。
?
开发:
1,建立web开发环境。
用eclipse建立一个动态web项目(myeclipse也一样,需要配置tomcat用于提供web service)。
2,拷贝需要采用的依赖包。
解压xfire-distribution-1.2.6.zip,pjl-comp-filter-1.6.6.zip拷贝lib里面的内容及xfire-all-1.2.6.jar,pjl-comp-filter-1.6.6.jar,ORACLE驱动classes12.jar。
3,开发业务功能。
建立表结构

create?table?HD.HDUSER
(
??ID?NUMBER(8)?not?null,
??NAME NVARCHAR2(16)
tablespace?HANDLEWELL
??pctfree?10
??initrans?1
??maxtrans?255
??storage
??(
????initial?64K
????minextents 1
????maxextents?unlimited
??);

?
建立业务对象
?

public?class?User?implements?Serializable?{

????private?static?final?long?serialVersionUID?=?-4924323782825351658L;
????
????private?Integer?id;
????String?nameString?passwd;

????public?getId({
????????return?}

????void?setId(this.id?=?getNamesetNamename?String?getPasswdreturn?passwdvoid?setPasswd.passwd?=?passwd}

????@Override
????toString{
????????StringBuffer?sb?new?StringBuffer"User:[";
????????sbappend"ID:"",""Name:""Passwd:"(passwd"]";
????????return?sb}

}

建立业务接口

?

interface?IUserService?{
????boolean?addUserint?boolean?modifyUserpublic?User queryUserboolean?deleteUser;
}

建立DAO接口

interface?IUserDAO?(User user}

实现DAO接口

class?UserDAOImpl?extends?JdbcDaoSupport?implements?IUserDAO?{

????@sql?"insert into HDUSER(id,name,passwd)values("?+?user+??"',204)">.getPasswd"')".getJdbcTemplateexecutesqlreturn?true"delete from HDUSER where id="?// TODO Auto-generated method stub

????????return?falsereturn?}

实现业务

class?UserServiceImpl?implements?IUserService?{
????
????private?IUserDAO userDAOpublic?IUserDAO getUserDAOreturn?userDAOvoid?setUserDAO(IUserDAO userDAO.userDAO?=?userDAO{
????????User u?new?User;
????????uInteger.setPasswd.getUserDAO.addUser(u}

4,配置Spring。

在WEB-INF下建立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"userBean"?class"com.handlewell.user.service.impl.UserServiceImpl">
????????<property name"userDAO"?ref"userDAO"?//bean>
????
????"dataSource"?class"com.mchange.v2.c3p0.ComboPooledDataSource"?destroy-method"close">
???????????"driverClass"><value>oracle.jdbc.driver.OracleDriver/value/property"jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl"user">hd"password""userDAO"?class"com.handlewell.user.dao.impl.UserDAOImpl""dataSource"?ref"dataSource"?>?

/beans>

在web.xml文件加入Spring配置

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

5,配置web service。

在WEB-INF下建立xfire-servlet.xml文件。

<!-- 引入XFire配置信息 --<import resource"classpath:org/codehaus/xfire/spring/xfire.xml"?<!-- 定义访问的url--<bean class"org.springframework.web.servlet.handler.SimpleUrlHandlerMapping""urlMap">?
???????????<map>?
??????????????<entry key"/userService.ws">?
??????????????????<ref bean"userService"?/entry/map>?
????>

????<!-- 使用XFire导出器 --"baseWebService"?class"org.codehaus.xfire.spring.remoting.XFireExporter"?lazy-init"false"?abstract"true""serviceFactory"?ref"xfire.serviceFactory"?"xfire"?ref"xfire"?<!-- 建立web service服务 --"userService"?parent"baseWebService""serviceBean"?ref"userBean"?"serviceClass"?value"com.handlewell.user.service.IUserService"?>

在web.xml中加入

<!-- begin XFire 配置 --<servlet<servlet-name>xfire/servlet-name<servlet-class.servlet.DispatcherServlet/servlet-class/servlet<servlet-mapping<url-pattern*.ws/url-pattern/servlet-mapping<!-- end XFire配置 -->

至此开发工作结束。

6,测试。

启动tomcat服务,先访问一下WSDL信息http://localhost:8080/sx/userService.ws?wsdl

生成的WSDL信息如下

<wsdl:definitions targetNamespace"http://service.user.handlewell.com"
????xmlns:ns1"http://entity.user.handlewell.com"?xmlns:soapenc12"http://www.w3.org/2003/05/soap-encoding"
????xmlns:tns"http://service.user.handlewell.com"?xmlns:wsdl"http://schemas.xmlsoap.org/wsdl/"
????xmlns:xsd"http://www.w3.org/2001/XMLSchema"?xmlns:soap11"http://schemas.xmlsoap.org/soap/envelope/"
????xmlns:wsdlsoap"http://schemas.xmlsoap.org/wsdl/soap/"?xmlns:soapenc11"http://schemas.xmlsoap.org/soap/encoding/"
????xmlns:soap12"http://www.w3.org/2003/05/soap-envelope"<wsdl:types<xsd:schema xmlns:xsd"http://www.w3.org/2001/XMLSchema"
????????????attributeFormDefault"qualified"?elementFormDefault"qualified"
????????????targetNamespace"http://service.user.handlewell.com">
????????????<xsd:element name"modifyUser">
????????????????<xsd:complexType>
????????????????????<xsd:sequence>
????????????????????????<xsd:element maxOccurs"1"?minOccurs"1"?name"in0"
????????????????????????????type"xsd:int"?"in1"
????????????????????????????nillable"true"?type"xsd:string"?"in2"
????????????????????????????nillable/xsd:sequence/xsd:complexType/xsd:element"modifyUserResponse""out"
????????????????????????????type"xsd:boolean"?"addUser""addUserResponse""queryUser""queryUserResponse""out"
????????????????????????????nillable"ns1:User"?"deleteUser""deleteUserResponse"/xsd:schema"http://entity.user.handlewell.com"<xsd:complexType name"User"<xsd:element minOccurs"0"?name"id"?nillable"true"
????????????????????????type"name"?nillable"passwd"?nillable/wsdl:types<wsdl:message name<wsdl:part name"parameters"?element"tns:queryUserResponse"/wsdl:part/wsdl:message"modifyUserRequest""tns:modifyUser""tns:addUserResponse""tns:modifyUserResponse""tns:deleteUserResponse""deleteUserRequest""tns:deleteUser""queryUserRequest""tns:queryUser""addUserRequest""tns:addUser"<wsdl:portType name"IUserServicePortType"<wsdl:operation name<wsdl:input name"modifyUserRequest"?message"tns:modifyUserRequest"/wsdl:input<wsdl:output name"modifyUserResponse"?message/wsdl:output/wsdl:operation"addUserRequest"?message"tns:addUserRequest""addUserResponse"?message"queryUserRequest"?message"tns:queryUserRequest""queryUserResponse"?message"deleteUserRequest"?message"tns:deleteUserRequest""deleteUserResponse"?message/wsdl:portType<wsdl:binding name"IUserServiceHttpBinding"?type"tns:IUserServicePortType"<wsdlsoap:binding style"document"
????????????transport"http://schemas.xmlsoap.org/soap/http"?<wsdlsoap:operation soapAction""?<wsdlsoap:body use"literal"?/wsdl:binding<wsdl:service name"IUserService"<wsdl:port name"IUserServiceHttpPort"?binding"tns:IUserServiceHttpBinding"<wsdlsoap:address location"http://localhost:8080/user/userService.ws"?/wsdl:port/wsdl:service/wsdl:definitions>

把内容存为文件。

启动soapUI,新建项目,并导入刚才的wsdl文件。

在addUser下request单击show request editor,就可以看到soap请求信息。

<soapenv:Envelope xmlns:soapenv"http://schemas.xmlsoap.org/soap/envelope/"?xmlns:ser>
???<soapenv:Header<soapenv:Body>
??????<ser:addUser>
?????????<ser:in0>11/ser:in0<ser:in1>aaa/ser:in1<ser:in2>bbb/ser:in2/ser:addUser/soapenv:Body/soapenv:Envelope>

提交,查看数据库,数据存入即成功。

有些朋友可能在webservice中各wsdl和soap协议各自的作用,我传人图片大家就明白了。

(编辑:李大同)

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

    推荐文章
      热点阅读