收藏 分销(赏)

MiXFire服务部署手册.docx

上传人:pc****0 文档编号:8843233 上传时间:2025-03-04 格式:DOCX 页数:8 大小:23.40KB
下载 相关 举报
MiXFire服务部署手册.docx_第1页
第1页 / 共8页
MiXFire服务部署手册.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述
XFire服务部署手册   2008-05-15 11:36   阅读22   评论0   字号:大 中  小小 一、准备工作:工程目录结构 工程的目录结构如下图所示: ldaxfire是工程的根目录。/WEB-INF/classes/META-INF/xfire目录用于存放service.xml文件。将下的包(用到的)copy到/WEB-INF/lib目录下。               <servlet-name>XFireServlet</servlet-name>               <display-name>XFire Servlet</display-name>               <servlet-class>                      org.codehaus.xfire.transport.http.XFireConfigurableServlet               </servlet-class>        <servlet-mapping>               <servlet-name>XFireServlet</servlet-name>               <url-pattern>/services/*</url-pattern>        </servlet-mapping> 这样在工程中发布的所有服务都可以在工程URL的services子目录下访问。 三、类结构调整 XFire对于要发布的服务没有多余的要求,它可以自动的将指定服务类的公共方法发布出去。但是POJOs的调用要求传入的参数类型必须是接口;同时由于XFire生成的桩使用了不支持的JSR181注释类型,所以在这里最好是遵从POJOs的要求,为每一个要发布的服务类生成一个接口,以便于低版本的客户端使用POJOs方式进行访问。 四、类型影射 XFire支持的数据类型包括基础类型、数组、集合、字符串、Date(java.util.Date、java.util.Calendar、java.sql.Timestamp、java.sql.Date、java.sql.Time)、XML类型(Document、Element、XMLStreamReader、Source)及以上类型组成的复合类型。 基础类型、数组、String、Date类型不用进行类型影射,除此之外的数据类型如List、Map等集合对象或是其它的复合类型,必须要写对应的类型影射。 XFire的类型影射在ServiceClassName.aegis.xml(ServiceClassName为服务类/接口的名字)文件中声明。 在这里尽量要求发布服务的参数和返回值不要超出基础类型、数组、String的泛围,因此类型影射在此不作详细说明。 在XFire工程中service.xml必须位于/WEB-INF/classes/META-INF/xfire/目录下。其基本格式如下               <inHandlers>                      <handler handlerClass=""></handler>               </inHandlers>               <name />               <namespace />               <serviceClass />               <implementationClass />               <serviceFactory />               <bindingProvider />               <style>document|rpc|message|wrapped</style>               <use>literal|encoded</use>               <scope>request|session|application</scope>               <invoker />               <executor />               <inHandlers>                      <handler handlerClass="" />               </inHandlers>               <outHandlers>                      <handler handlerClass="" />               </outHandlers>               <faultHandlers>                      <handler handlerClass="" />               </faultHandlers>               <createDefaultBindings>true|false</createDefaultBindings>               <bindings>                      <soap11Binding transport=""                             allowUndefinedEndpoints="">                             <endpoints>                                    <endpoint url="" />                             </endpoints>                      </soap11Binding>                      <soap12Binding transport=""                             allowUndefinedEndpoints="">                             <endpoints>                                    <endpoint url="" />                             </endpoints>                      </soap12Binding>               </bindings> 1、name:必须的。ServiceRegisty就是通过这个名字进行服务注册的,服务部署完成后也是用它来调用服务。 3、serviceClass:必须的。要部署到服务中的类,可以是接口。 4、implementationClass:可选的。服务被调用时使用的实现类。如果serviceClass的值是一个接口,那么这个值就必须配置,且必须为serviceClass指定接口的实现类。 5、serviceFactory:可选的。ServiceFactory控制服务创建和配置。 6、bindingProvider:设置bindingProvider,提供绑定相关的信息。如端口等。 7、style:可选的。参数样式。默认值为wrapped。可取值为wrapped、message、document 及rpc。 8、use:可选的。指定编码类型。取值可以是encoding或litaral,目前的XFire支持literal格式,即无编码。 9、scope:可选的。指定服务的生存周期。默认值为application,即在所以访问期间只创建一个服务,不用时可以会被持久化。可以是application、session或request。 invoker:可选的。设置调用转接器。如果当服务实现类不是一个无格式java bean时invoker可以指定其调用方式。 excutor:可选值。可以为服务指定一个默认值以外的执行策略。 handlers:可以使用inHandlers、outHandlers或faulterHandlers为服务指定输入、输出和出错时的调用的处理。每个handler自身是一个XML解析的处理句柄。 createDefaultBinding:可选。默认为true,即创建默认的SOAP1.1 HTTP绑定。如果不想创建默认的绑定,可将其值设为false。 绑定配置:每一个绑定都要指定的一个transport ID。下面是对应的Transport与ID的对应表。使用endpoint选项可以覆盖掉默认的端口地址。 JMS urn:xfire:transport:jms Local urn:xfire:transport:local               <name>ServiceName</name>               <serviceClass> com.yourcompany.yourpath..ServiceInterface</serviceClass>               <implementationClass>                      com.yourcompany.yourpath.ServiceImplClass               </implementationClass>               <inHandlers>                      <handler                             handlerClass="com.yourcompany.yourpath.HandlerClass" />               </inHandlers> 用自己实际的路径和类名取代上面的配置就是一个典型的XFire service配置。 六、客户端调用 客户端调用采用POJOs方式。在这种方式下要用到在服务端定义的服务接口。具体代码如下:               Service serviceModel = new ObjectServiceFactory().create(               XFireProxyFactory serviceFactory = new XFireProxyFactory();               ServiceInterface service = (ServiceInterface) serviceFactory.create(                             serviceModel, serviceURL);               Client client = Client.getInstance(service);               client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");               data = service.serviceMethod(); 注:其中的ServiceInterface在实际工程中要以实际的接口类型替代,serviceMethod以具体的方法名替代。 在XFire1.2以后支持SOAP消息的GZip压缩传输,在合适的地方启动GZip压缩可以减少网络传输的数据量,加快速度。 在XFire中启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter的最新版本是1.6.4,自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6(这个版本会与高版本同步更新)。 一、服务端启动GZip:在服务端启动GZip只需将PJL Compressing Filter下的jar包(用到的)导入到web的/WEB-INF/lib目录下。并在web.xml文件中增加如下配置:               <filter-name>CompressingFilter</filter-name>               <filter-class>               </filter-class>               <init-param>                      <param-name>debug</param-name>                      <param-value>false</param-value>               </init-param>               <init-param>                      <param-name>statsEnabled</param-name>                      <param-value>true</param-value>               </init-param>        <filter-mapping>               <filter-name>CompressingFilter</filter-name>               <url-pattern>/*</url-pattern>        </filter-mapping> 代码清单7-1:服务端加入GZip时web.xml中增加的配置 注:根据web.xml文法定义,这个定义必须位于servlet定义之前。 二、客户端启用GZip:客户端启动GZip只要将客户端的GZip的属性设为true却可。代码如下:               Service serviceModel = new ObjectServiceFactory().create(               XFireProxyFactory serviceFactory = new XFireProxyFactory();               ServiceInterface service = (ServiceInterface) serviceFactory.create(                             serviceModel, serviceURL);               Client client = ((XFireProxy) Proxy.getInvocationHandler(service))                             .getClient(); 启动response压缩               client.setProperty(CommonsHttpMessageSender.                             GZIP_RESPONSE_ENABLED, Boolean.TRUE);               client.setProperty(CommonsHttpMessageSender.                             GZIP_RESPONSE_ENABLED,Boolean.TRUE); 同时启动response和request压缩               client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,                             Boolean.TRUE);               client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");               data = service.serviceMethod(); 注:在同时启用时,不必再分别启用response和request的GZip压缩。 注意,当服务端没有启用GZip,客户端启用请求GZip压缩时,会产生SOAP解析错误,如果服务端启动了GZip压缩功能,客户端是否启用GZip都没有影响。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服