MiForum 医学信息学论坛's Archiver

danelchen 发表于 2008-1-29 08:59

[转贴]Eclipse Apache CXF 集成

SRC : [url=http://bldmickey.blog.sohu.com/61111724.html]http://bldmickey.blog.sohu.com/61111724.html[/url]

[align=center][font=Arial][size=5][b]Eclipse Apache CXF 集成[/b][/size][/font][/align][font=Arial]一. 安装Eclipse STP[/font][font=Arial]详细见《Web Service Eclipse STP 安装.doc》文档。安装文档中包括Eclipse STP,Apache CXF相关的Plugins。[/font]
[font=Arial][/font]
[font=Arial]二. 安装Apache CXF[/font][font=Arial]详细见《Web Service Eclipse STP 安装.doc》文档。安装文档中包括Apache CXF Runtime的安装。[/font]
[font=Arial]注意:如果安装了Apache Axis2 Tools,注意将相关的Plugins删除,主要包括Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0,否则CXF无法自动从SEI(Service Endpoint Interface) 接口创建WSDL文件。[/font]
[font=Arial]注意:在启动Eclipse之前,需要在eclipse.ini文件中添加相关选项:-Dorg.osgi.framework.bootdelegation=*原因请具体查看下面的链接:[/font][url=http://wiki.eclipse.org/Eclisep_3.3_runtime_options_for_STP.SC#bootdelegation_configuration][font=Arial][size=2][color=#000000]http://wiki.eclipse.org/Eclisep_3.3_runtime_options_for_STP.SC#bootdelegation_configuration[/color][/size][/font][/url][font=Arial]。否则可能会出现无法自动创建WSDL文件现象。[/font]
[font=Arial][/font]
[font=Arial]三. 设置Apache CXF属性[/font][list][*][font=Arial]         菜单选择Window->Preferences->选择SOA Tools->JAX-WS->设置Apache CXF的runtime位置,例如:C:\apps\apache-cxf-2.1。详细见《Web Service Eclipse STP 安装.doc》文档。[/font][*][font=Arial]         菜单选择Window->Preferences->选择SOA Tools->JAX-WS->Apache CXF->设置WSDL Generation Options中选择SOAP1.1。[/font][/list][font=Arial]注意:可以选择SOAP1.2,不过WSDL自动生成的时候,缺省只生成soap12的binding,不包括SOAP1.1,对于这种情况可能会出现一个问题:如果用VC(例如:VS2005) Web引用的方式调用的话,会出WS-I兼容性问题,因为它不识别soap12的binding。[/font]
[font=Arial][img]http://120.img.pp.sohu.com/images/blog/2007/8/24/16/21/11530fd1fca.jpg[/img][/font]
[font=Arial]  [/font]
[font=Arial]四. 创建JAX-WS项目[/font][list][*][font=Arial]        菜单选择New->Project...->选择SOA-Tools->JAX-WS Java First Project后选择继续[/font][*][font=Arial]        在Project Name中输入:scxstp01,选择Finish完成[/font][/list][font=Arial][/font]
[font=Arial]五. 创建SEI接口[/font][list][*][font=Arial]        菜单选择New->Other…->选择Interface后选择继续[/font][/list][font=Arial][img]http://120.img.pp.sohu.com/images/blog/2007/8/24/16/22/11530fe2443.jpg[/img][/font]
[font=Arial]  [/font]
[list][*][font=Arial]         在Package中输入:org.eclipse.stp.example,在Name中输入:SayHi,选择完成[/font][*][font=Arial]         在SayHi.java文件中添加Interface的方法声明(下面蓝色部分)[/font][/list][table][tr][td][align=left][font=Arial][b]package[/b] org.eclipse.stp.example;[/font][/align][align=left][font=Arial][b]public[/b] [b]interface[/b] SayHi {[/font][/align][align=left][font=Arial]       [b]public[/b][b] [u]String[/u] SayHello(String value);[/b][/font][/align][font=Arial]}[/font]
[/td][/tr][/table]
[font=Arial][/font]
[font=Arial]六. 增加@WebMethod注释[/font][list][*][font=Arial]         在Outline视图中选择SayHello方法->菜单中选择SOA->JAX-WS->@Create WebMethod,自动添加相关注释和代码(下面蓝色部分)[/font][/list][table][tr][td][align=left][font=Arial][b]package[/b] org.eclipse.stp.example;[/font][/align][align=left][font=Arial][/font] [/align][align=left][font=Arial][b]import[/b][b] javax.xml.ws.RequestWrapper;[/b][/font][/align][align=left][font=Arial][b]import[/b][b] javax.xml.ws.ResponseWrapper;[/b][/font][/align][align=left][font=Arial][b]import[/b][b] javax.jws.WebMethod;[/b][/font][/align][align=left][font=Arial][/font] [/align][align=left][font=Arial][b]public[/b] [b]interface[/b] SayHi {[/font][/align][align=left][font=Arial]       [b]@WebMethod(operati, exclude=false)[/b][/font][/align][align=left][font=Arial][b]@ResponseWrapper(className="org.eclipse.stp.example.SayHelloResponse", localName="SayHelloResponse", targetNamespace="http://example.stp.eclipse.org/")[/b][/font][/align][align=left][b][font=Arial]       @RequestWrapper(className="org.eclipse.stp.example.SayHello", localName="SayHello", targetNamespace="http://example.stp.eclipse.org/")[/font][/b][/align][align=left][font=Arial]       [b]public[/b] String SayHello(String value);[/font][/align][font=Arial]}[/font]
[/td][/tr][/table]
[font=Arial]注意:上面定义了OperationName是:SayHello;同时定义了两个类:SayHelloResponse和SayHello[/font]
[font=Arial][/font]
[font=Arial]七. 增加@WebService注释[/font][list][*][font=Arial]         在Outline视图中选择SayHi接口->菜单中选择SOA->JAX-WS->@Create WebService,自动添加相关注释和代码(下面蓝色部分)[/font][/list][table][tr][td][align=left][font=Arial][b]package[/b] org.eclipse.stp.example;[/font][/align][align=left][font=Arial][/font] [/align][align=left][font=Arial][b]import[/b] javax.xml.ws.RequestWrapper;[/font][/align][align=left][font=Arial][b]import[/b] javax.xml.ws.ResponseWrapper;[/font][/align][align=left][font=Arial][b]import[/b] javax.jws.WebMethod;[/font][/align][align=left][font=Arial][b]import[/b][b] javax.jws.WebService;[/b][/font][/align][align=left][font=Arial][/font] [/align][align=left][b][font=Arial]@WebService(name="SayHi", targetNamespace="http://example.stp.eclipse.org/")[/font][/b][/align][align=left][font=Arial][b]public[/b] [b]interface[/b] SayHi {[/font][/align][align=left][font=Arial]       @WebMethod(operati, exclude=[b]false[/b])[/font][/align][align=left][font=Arial]       @ResponseWrapper(className="org.eclipse.stp.example.SayHelloResponse", localName="SayHelloResponse", targetNamespace="http://example.stp.eclipse.org/")[/font][/align][align=left][font=Arial]       @RequestWrapper(className="org.eclipse.stp.example.SayHello", localName="SayHello", targetNamespace="http://example.stp.eclipse.org/")[/font][/align][align=left][font=Arial]       [b]public[/b] String SayHello(String value);[/font][/align][font=Arial]}[/font]
[/td][/tr][/table]
[font=Arial]注意:上面定义的Service的名字是SayHi.[/font]
[font=Arial][/font]
[font=Arial]八. 创建WSDL文件[/font][list][*][font=Arial]         在SayHi.java文件中选择@webservice部分->在下面的Annotation Properties中选中javax.jws.soap.SOAPBinding,将缺省的false修改成true;将SOAPBinding中的Style属性从RPC修改成Document。[/font][/list][font=Arial]注意:SOAPBinding中RPC模式不支持RequestWrapper方式[/font]
[font=Arial][img]http://120.img.pp.sohu.com/images/blog/2007/8/24/16/23/11530ff5852.jpg[/img][/font]
[font=Arial]  [/font]
[font=Arial]l         系统自动添加下面的代码[/font]
[table][tr][td][align=left][font=Arial][b]package[/b] org.eclipse.stp.example;[/font][/align][align=left][font=Arial][/font] [/align][align=left][font=Arial][b]import[/b] javax.xml.ws.RequestWrapper;[/font][/align][align=left][font=Arial][b]import[/b] javax.xml.ws.ResponseWrapper;[/font][/align][align=left][font=Arial][b]import[/b] javax.jws.WebMethod;[/font][/align][align=left][font=Arial][b]import[/b] javax.jws.WebService;[/font][/align][align=left][font=Arial][b]import[/b][b] javax.jws.soap.SOAPBinding;[/b][/font][/align][align=left][b][font=Arial][/font][/b] [/align][align=left][b][font=Arial]@SOAPBinding(use=SOAPBinding.Use.[i]LITERAL[/i], style=SOAPBinding.Style.[i]DOCUMENT[/i])[/font][/b][/align][align=left][font=Arial]@WebService(name="SayHi", targetNamespace="http://example.stp.eclipse.org/")[/font][/align][align=left][font=Arial][b]public[/b] [b]interface[/b] SayHi {[/font][/align][align=left][font=Arial]       @WebMethod([u]operationName[/u]="SayHello", exclude=[b]false[/b])[/font][/align][align=left][font=Arial]       @ResponseWrapper(className="org.eclipse.stp.example.SayHelloResponse", localName="SayHelloResponse", targetNamespace="http://example.stp.eclipse.org/")[/font][/align][align=left][font=Arial]       @RequestWrapper(className="org.eclipse.stp.example.SayHello", localName="SayHello", targetNamespace="http://example.stp.eclipse.org/")[/font][/align][align=left][font=Arial]       [b]public[/b] String SayHello(String value);[/font][/align][align=left][font=Arial]}[/font][/align][font=Arial][/font]
[/td][/tr][/table]
[font=Arial]l         保存项目,系统将自动产生SayHi.wsdl文件(注意:正常的情况肯定会生成这个文件),自动产生的文件:SayHello.java和SayHelloReponse.java。[/font]
[font=Arial]注意:WSDL文件中相关的关于soap:address的部分,[b] <soap:address location="http://localhost:9090/hello"/>[/b],这里的9090端口和hello只是作用在eclipse的客户端服务器方式测试时会用到。如果发布到tomcat服务器,相关的soap:address会自动改变。[/font]
[font=Arial]l         产生的WSDL的文件如下:[/font]
[table][tr][td][align=left][font=Arial]<?xml version="1.0" encoding="UTF-8"?>[/font][/align][align=left][font=Arial]<wsdl:definitions name="SayHiService" targetNamespace="http://example.stp.eclipse.org/" xmlns:ns1="http://example.stp.eclipse.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">[/font][/align][align=left][font=Arial]  <wsdl:types>[/font][/align][align=left][font=Arial]<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://example.stp.eclipse.org/" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://example.stp.eclipse.org/">[/font][/align][align=left][font=Arial]<xs:element name="SayHello" type="tns:SayHello"/>[/font][/align][align=left][font=Arial]<xs:element name="SayHelloResponse" type="tns:SayHelloResponse"/>[/font][/align][align=left][font=Arial]<xs:complexType name="SayHello">[/font][/align][align=left][font=Arial]<xs:sequence>[/font][/align][align=left][font=Arial]<xs:element minOccurs="0" name="arg0" type="xs:string"/>[/font][/align][align=left][font=Arial]</xs:sequence>[/font][/align][align=left][font=Arial]</xs:complexType>[/font][/align][align=left][font=Arial]<xs:complexType name="SayHelloResponse">[/font][/align][align=left][font=Arial]<xs:sequence>[/font][/align][align=left][font=Arial]<xs:element minOccurs="0" name="return" type="xs:string"/>[/font][/align][align=left][font=Arial]</xs:sequence>[/font][/align][align=left][font=Arial]</xs:complexType>[/font][/align][align=left][font=Arial]</xs:schema>[/font][/align][align=left][font=Arial]  </wsdl:types>[/font][/align][align=left][font=Arial]  <wsdl:message name="SayHelloResponse">[/font][/align][align=left][font=Arial]    <wsdl:part name="result" element="ns1:SayHelloResponse">[/font][/align][align=left][font=Arial]    </wsdl:part>[/font][/align][align=left][font=Arial]  </wsdl:message>[/font][/align][align=left][font=Arial]  <wsdl:message name="SayHello">[/font][/align][align=left][font=Arial]    <wsdl:part name="parameters" element="ns1:SayHello">[/font][/align][align=left][font=Arial]    </wsdl:part>[/font][/align][align=left][font=Arial]  </wsdl:message>[/font][/align][align=left][font=Arial]  <wsdl:portType name="SayHi">[/font][/align][align=left][font=Arial]    <wsdl:operation name="SayHello">[/font][/align][align=left][font=Arial]      <wsdl:input name="SayHello" message="ns1:SayHello">[/font][/align][align=left][font=Arial]    </wsdl:input>[/font][/align][align=left][font=Arial]      <wsdl:output name="SayHelloResponse" message="ns1:SayHelloResponse">[/font][/align][align=left][font=Arial]    </wsdl:output>[/font][/align][align=left][font=Arial]    </wsdl:operation>[/font][/align][align=left][font=Arial]  </wsdl:portType>[/font][/align][align=left][font=Arial]  <wsdl:binding name="SayHiServiceSoapBinding" type="ns1:SayHi">[/font][/align][align=left][font=Arial]    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>[/font][/align][align=left][font=Arial]    <wsdl:operation name="SayHello">[/font][/align][align=left][font=Arial]      <soap:operation soapAction="" style="document"/>[/font][/align][align=left][font=Arial]      <wsdl:input name="SayHello">[/font][/align][align=left][font=Arial]        <soap:body use="literal"/>[/font][/align][align=left][font=Arial]      </wsdl:input>[/font][/align][align=left][font=Arial]      <wsdl:output name="SayHelloResponse">[/font][/align][align=left][font=Arial]        <soap:body use="literal"/>[/font][/align][align=left][font=Arial]      </wsdl:output>[/font][/align][align=left][font=Arial]    </wsdl:operation>[/font][/align][align=left][font=Arial]  </wsdl:binding>[/font][/align][align=left][font=Arial]  <wsdl:service name="SayHiService">[/font][/align][align=left][font=Arial]    <wsdl:port name="SayHiPort" binding="ns1:SayHiServiceSoapBinding">[/font][/align][align=left][font=Arial]      [b]<soap:address location="http://localhost:9090/hello"/>[/b][/font][/align][align=left][font=Arial]    </wsdl:port>[/font][/align][align=left][font=Arial]  </wsdl:service>[/font][/align][align=left][font=Arial]</wsdl:definitions>[/font][/align][/td][/tr][/table]
[font=Arial][/font]
[font=Arial]九. 由WSDL创建Java程序[/font][font=Arial]l         选择SayHi.wsdl文件->菜单选择SOA->JAX-WS->Generate Code,显示界面如下:[/font]
[font=Arial][img]http://120.img.pp.sohu.com/images/blog/2007/8/24/16/24/11530ffc0a1.jpg[/img][/font]
[font=Arial]  l         选择Finish,代码架构如下:[/font]
[font=Arial][img]http://120.img.pp.sohu.com/images/blog/2007/8/24/16/25/11531008cbd.jpg[/img][/font]
[font=Arial]  [/font]
[font=Arial]l         创建的Java程序:ObjectFactory.java, Package-info.java, SayHi_SayHiPort_Client.java, SayHi_SayHiPort_Server.java, SayHiImpl.java, SayHiService.java文件[/font]
[font=Arial][/font]
[font=Arial]十. 修改服务器端业务代码[/font][font=Arial]l         修改SayHiImpl.java文件中的实现部分(下面蓝色部分),返回“[b]"Hello: " + arg0[/b]”[/font]
[table][tr][td][align=left][font=Arial][b]package[/b] org.eclipse.stp.example;[/font][/align][align=left][font=Arial][b]import[/b] java.util.logging.Logger;[/font][/align][align=left][font=Arial][b]public[/b] [b]class[/b] SayHiImpl [b]implements[/b] SayHi {[/font][/align][align=left][font=Arial]    [b]private[/b] [b]static[/b] [b]final[/b] Logger [i]LOG[/i] = Logger.[i]getLogger[/i](SayHiImpl.[b]class[/b].getName());[/font][/align][align=left][font=Arial]    [b]public[/b] java.lang.String sayHello(java.lang.String arg0) { [/font][/align][align=left][font=Arial]        [i]LOG[/i].info("Executing operation sayHello");[/font][/align][align=left][font=Arial]        System.[i]out[/i].println(arg0);[/font][/align][align=left][font=Arial]        [b]try[/b] {[/font][/align][align=left][font=Arial] [b]           //java.lang.String _return = "";[/b][/font][/align][align=left][b][font=Arial]            java.lang.String _return = "Hello: " + arg0;[/font][/b][/align][align=left][font=Arial]            [b]return[/b] _return;[/font][/align][align=left][font=Arial]        } [b]catch[/b] (Exception ex) {[/font][/align][align=left][font=Arial]            ex.printStackTrace();[/font][/align][align=left][font=Arial]            [b]throw[/b] [b]new[/b] RuntimeException(ex);[/font][/align][font=Arial]        }[/font]
[/td][/tr][/table]
[font=Arial][/font]
[font=Arial]l         SayHi_SayHiPort_Server.java相关代码,下面蓝色部分根据SayHi.wsld文件中的:<soap:address location="http://localhost::9090/hello"/>确定,此地址和Eclipse中测试Server启动端口和URI相关。[/font]
[table][tr][td][align=left][font=Arial][b]package[/b] org.eclipse.stp.example;[/font][/align][align=left][font=Arial][b]import[/b] javax.xml.ws.Endpoint;[/font][/align][align=left][font=Arial][b]public[/b] [b]class[/b] SayHi_SayHiPort_Server{[/font][/align][align=left][font=Arial]    [b]protected[/b] SayHi_SayHiPort_Server() [b]throws[/b] Exception {[/font][/align][align=left][font=Arial]        System.[i]out[/i].println("Starting Server");[/font][/align][align=left][font=Arial]        Object implementor = [b]new[/b] SayHiImpl();[/font][/align][align=left][font=Arial]        [b]String address = "http://localhost:9090/hello";[/b][/font][/align][align=left][font=Arial]        Endpoint.[i]publish[/i](address, implementor);[/font][/align][align=left][font=Arial]    }[/font][/align][align=left][font=Arial]    [b]public[/b] [b]static[/b] [b]void[/b] main(String args[]) [b]throws[/b] Exception { [/font][/align][align=left][font=Arial]        [b]new[/b] SayHi_SayHiPort_Server();[/font][/align][align=left][font=Arial]        System.[i]out[/i].println("Server ready...");         [/font][/align][align=left][font=Arial]        [/font][/align][align=left][font=Arial]        Thread.[i]sleep[/i](5 * 60 * 1000); [/font][/align][align=left][font=Arial]        System.[i]out[/i].println("Server exitting");[/font][/align][align=left][font=Arial]        System.[i]exit[/i](0);[/font][/align][align=left][font=Arial]    }[/font][/align][align=left][font=Arial]}[/font][/align][/td][/tr][/table]
[font=Arial][/font]
[font=Arial]十一. 修改客户端业务代码[/font][font=Arial]       修改SayHi_SayHiPort_Client.java代码中,关于客户端访问的代码[/font]
[table][tr][td][align=left][font=Arial][b]package[/b] org.eclipse.stp.example;[/font][/align][align=left][font=Arial][b]import[/b] java.io.File;[/font][/align][align=left][font=Arial][b]import[/b] java.net.MalformedURLException;[/font][/align][align=left][font=Arial][b]import[/b] java.net.URL;[/font][/align][align=left][font=Arial][b]import[/b] javax.xml.namespace.QName;[/font][/align][align=left][font=Arial][b]public[/b] [b]final[/b] [b]class[/b] SayHi_SayHiPort_Client {[/font][/align][align=left][font=Arial]    [b]private[/b] [b]static[/b] [b]final[/b] QName [i]SERVICE_NAME[/i] = [b]new[/b] QName("http://example.stp.eclipse.org/", "SayHiService");[/font][/align][align=left][font=Arial]    [b]private[/b] SayHi_SayHiPort_Client() {[/font][/align][align=left][font=Arial]    }[/font][/align][align=left][font=Arial]    [b]public[/b] [b]static[/b] [b]void[/b] main(String args[]) [b]throws[/b] Exception {[/font][/align][align=left][font=Arial]        [b]if[/b] (args.length == 0) { [/font][/align][align=left][font=Arial]            System.[i]out[/i].println("please specify wsdl");[/font][/align][align=left][font=Arial]            System.[i]exit[/i](1); [/font][/align][align=left][font=Arial]        }[/font][/align][align=left][font=Arial]        URL wsdlURL = [b]null[/b];[/font][/align][align=left][font=Arial]        File wsdlFile = [b]new[/b] File(args[0]);[/font][/align][align=left][font=Arial]        [b]try[/b] {[/font][/align][align=left][font=Arial]            [b]if[/b] (wsdlFile.exists()) {[/font][/align][align=left][font=Arial]                wsdlURL = wsdlFile.toURL();[/font][/align][align=left][font=Arial]            } [b]else[/b] {[/font][/align][align=left][font=Arial]                wsdlURL = [b]new[/b] URL(args[0]);[/font][/align][align=left][font=Arial]            }[/font][/align][align=left][font=Arial]        } [b]catch[/b] (MalformedURLException e) {[/font][/align][align=left][font=Arial]            e.printStackTrace();[/font][/align][align=left][font=Arial]        }[/font][/align][align=left][font=Arial]        SayHiService ss = [b]new[/b] SayHiService(wsdlURL, [i]SERVICE_NAME[/i]);[/font][/align][align=left][font=Arial]        SayHi port = ss.getSayHiPort();  [/font][/align][align=left][font=Arial]        System.[i]out[/i].println("Invoking sayHello...");[/font][/align][align=left][font=Arial]         System.[i]out[/i].println("Invoking sayHello...");[/font][/align][align=left][font=Arial]        //*************Changed by Zhenghao***************[/font][/align][align=left][font=Arial]        //java.lang.String _sayHi_arg0 = "";[/font][/align][align=left][font=Arial]        java.lang.String _sayHello_arg0 = "Zhenghao";[/font][/align][align=left][font=Arial]        //*************Ended Change by Zhenghao**********[/font][/align][align=left][font=Arial]        java.lang.String _sayHello__return = port.SayHello(_sayHello_arg0);          System.[i]out[/i].println("sayHello.result=" + _sayHello__return);[/font][/align][align=left][font=Arial]        System.[i]exit[/i](0);[/font][/align][align=left][font=Arial]    }[/font][/align][align=left][font=Arial]}[/font][/align][/td][/tr][/table]
[font=Arial][/font]
[font=Arial]十二. 配置tomcat服务器[/font][font=Arial]12.1 安装库文件(支持CXF)[/font][font=Arial]在生产环境中,将CXF下载软件lib和modules目录下的所有jar包拷贝到tomcat安装目录的shared/lib下面。重启Tomcat。[/font]
[font=Arial][/font]
[font=Arial]12.2 配置tomcat服务器[/font][font=Arial]l         菜单选择File->New->Other…->选择Server->Server后选择Next[/font]
[font=Arial]l         在Server’s Host name中缺省为localhost,选择Apache->Tomcat v5.5 Server后选择Next[/font]
[font=Arial]l         Tomcat Server设置中选择Name:缺省,设置Tomcat installation directory中设置tomcat安装的目录,设置缺省的JRE版本,选择Finish完成[/font]
[font=Arial]l         菜单选择Window->Show View->Other…->选择Server->Server,在Servers的视图中将现在Tomcat v5.5. Server at localhost的状态是Stopped。双击Server想显示Tomcat Server Overview的窗口。[/font]
[font=Arial]l         在Server Location中选择:Use Tomcat installation(take control of Tomcat installation)[/font]
[font=Arial][img]http://119.img.pp.sohu.com/images/blog/2007/8/24/16/26/11530e75696.jpg[/img][/font]
[font=Arial]  [/font]
[font=Arial]l         工具栏中选择保存[/font]
[font=Arial]12.3 启动tomcat[/font][font=Arial]选中本地的tomcat服务器,右键选择start,服务器的状态从stopped到started[/font]
[font=Arial][/font]
[font=Arial]十三. 创建Web Service的deployment profile[/font][font=Arial]l         菜单选择File->New->Other…->选择SOA Tools->Deployment Profile后选择Next;[/font]
[font=Arial]l         在scxstp01中点击wsdl,在File Name中输入:SayHiDeploy,如下图:选择Next;[/font]
[font=Arial][img]http://120.img.pp.sohu.com/images/blog/2007/8/24/16/27/11531020dae.jpg[/img][/font]
[font=Arial]  [/font]
[font=Arial]l         在Deployment Description选择继续;Package中选择继续;Target Server选择继续;Summary中选择Finish[/font]
[font=Arial]l         在wsdl目录下将创建SayHiDeploy.deploy项,右边显示deploy文件,在文件显示框中选择Configuration Tab[/font]
[font=Arial][img]http://117.photo.pp.sohu.com/images/blog/2007/8/24/16/24/11530e2ead5.jpg[/img][/font]
[font=Arial]  [/font]
[font=Arial]l         选择Add Target…->在弹出对话框中选择刚才启动的“Tomcat v5.5 Server at localhost”,选择OK,在Server框中将显示刚才添加的target server。[/font]
[font=Arial]l         选择Create Target[/font]
[font=Arial]l         选择Deploy Package[/font]
[font=Arial]l         查看Console Tab,将显示Package Deploy的状态(类似下面的log)[/font]
[align=left][font=Arial]INFO: Creating Service {[url]http://example.stp.eclipse.org/[/url]}SayHiService from WSDL: WEB-INF/wsdl/SayHi.wsdl[/font][/align][font=Arial][/font]
[font=Arial]十四. Web浏览器测试[/font][font=Arial]在浏览器中输入:[/font][url=http://localhost:8081/SayHi/services/SayHi?wsdl][font=Arial][size=2][color=#000000]http://localhost:8081/SayHi/services/SayHi?wsdl[/color][/size][/font][/url]
[font=Arial][size=2][color=#000000][img]http://119.img.pp.sohu.com/images/blog/2007/8/24/16/29/11530ea4262.jpg[/img][/color][/size][/font]
[font=Arial]  [/font]
[font=Arial]Deploy后的一个需要注意的地方,binding的地址和名称根据[/font]
[table][tr][td][font=Arial]<wsdl:service name="[b]SayHiService[/b]">[/font]
[url=http://localhost:8081/SayHi/services/SayHi?wsdl##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <wsdl:port binding="[b]ns1:SayHiServiceSoapBinding[/b]" name="[b]SayHiPort[/b]">[/font]
[font=Arial]  <soap:address location="http://localhost:8081/SayHi/services/SayHi" /> [/font]
[font=Arial]  </wsdl:port>[/font]
[font=Arial]</wsdl:service>[/font]
[/td][/tr][tr][td][font=Arial][/font]
[/td][/tr][/table]
[font=Arial][/font]
[font=Arial]在浏览器中输入:[/font][url=http://localhost:8081/SayHi/services/SayHi/SayHello?arg0=bldmickey][font=Arial][size=2][color=#000000]http://localhost:8081/SayHi/services/SayHi/SayHello?arg0=bldmickey[/color][/size][/font][/url]
[table][tr][td][url=http://localhost:8081/SayHi/services/SayHi/SayHello?arg0=bldmickey##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <soap:Envelope xmlns:soap="[b]http://schemas.xmlsoap.org/soap/envelope/[/b]">[/font]
[url=http://localhost:8081/SayHi/services/SayHi/SayHello?arg0=bldmickey##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <soap:Body>[/font]
[url=http://localhost:8081/SayHi/services/SayHi/SayHello?arg0=bldmickey##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <ns2:SayHelloResponse xmlns:ns2="[b]http://example.stp.eclipse.org/[/b]">[/font]
[font=Arial]  <return>Hello: bldmickey</return> [/font]
[font=Arial]  </ns2:SayHelloResponse>[/font]
[font=Arial]  </soap:Body>[/font]
[font=Arial]  </soap:Envelope>[/font]
[font=Arial][/font]
[/td][/tr][/table]
[font=Arial]其中SayHello对应的是相应的Operation,其中arg0是参数名称[/font]
[font=Arial][/font]
[font=Arial]十五. 客户端测试[/font][font=Arial]l         菜单选择Run->Open Run Dialog…->选择Java Application -> SayHi_SayHiPort_Server->选择Run。Console中显示:[/font]
[table][tr][td][align=left][font=Arial]Aug 22, 2007 11:15:36 PM sun.reflect.NativeMethodAccessorImpl invoke0[/font][/align][align=left][font=Arial]INFO: Started SelectChannelConnector @ 0.0.0.0:9090[/font][/align][font=Arial]Server ready...[/font]
[/td][/tr][/table]
[font=Arial]l         菜单选择Run->Open Run Dialog…->选择Java Application -> SayHiClient…->选择Run。Console中显示:[/font]
[table][tr][td][align=left][font=Arial]INFO: Creating Service {[url]http://example.stp.eclipse.org/[/url]}SayHiService from WSDL: file:/D:/2007/CodeWorm/WebService/SourceCode/CXF/scxstp01/wsdl/SayHi.wsdl[/font][/align][align=left][font=Arial]Invoking sayHello...[/font][/align][font=Arial]sayHello.result=Hello: Zhenghao[/font]
[/td][/tr][/table]
[font=Arial][/font]
[font=Arial]l         或者在浏览器中测试[/font]
[url=http://localhost:9090/hello?wsdl][font=Arial][size=2][color=#000000]http://localhost:9090/hello?wsdl[/color][/size][/font][/url]
[font=Arial]结果基本和步骤十四相同,区别在于[/font]
[table][tr][td][url=http://localhost:9090/hello?wsdl##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <wsdl:service name="[b]SayHiService[/b]">[/font]
[url=http://localhost:9090/hello?wsdl##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <wsdl:port binding="[b]ns1:SayHiServiceSoapBinding[/b]" name="[b]SayHiPort[/b]">[/font]
[font=Arial]  [b]<[/b][b]soap:address[/b][b] location="http://localhost:9090/hello" /> [/b][/font]
[font=Arial]  </wsdl:port>[/font]
[font=Arial]  </wsdl:service>[/font]
[/td][/tr][/table]
[url=http://localhost:9090/hello/SayHello?arg0=zhenghao][font=Arial][size=2][color=#000000]http://localhost:9090/hello/SayHello?arg0=zhenghao[/color][/size][/font][/url]
[font=Arial]结果基本和步骤十四相同[/font]
[font=Arial][/font]
[font=Arial]十六. 部署到生产Tomcat服务器[/font][font=Arial]       将SayHi.war文件直接复制到生产服务器上的:tomcat安装目录下的webapps子目录下。修改文件的属性。例如:[/font]
[font=Arial]       修改文件的属主。su成tomcat用户,touch SayHi.war。tomcat将自动生成目录SayHi[/font]
[font=Arial]Web浏览器测试:[/font]
[url=http://ServerIP:Port/SayHi/services/SayHi?wsdl][font=Arial][size=2][color=#000000]http://ServerIP:Port/SayHi/services/SayHi?wsdl[/color][/size][/font][/url]
[table][tr][td][url=http://211.99.203.102:7777/SayHi/services/SayHi?wsdl##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <wsdl:service name="[b]SayHiService[/b]">[/font]
[url=http://211.99.203.102:7777/SayHi/services/SayHi?wsdl##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <wsdl:port binding="[b]ns1:SayHiServiceSoapBinding[/b]" name="[b]SayHiPort[/b]">[/font]
[font=Arial]  <soap:address location="[b]http://ServerIP:Port/SayHi/services/SayHi[/b]" /> [/font]
[font=Arial]  </wsdl:port>[/font]
[font=Arial]  </wsdl:service>[/font]
[/td][/tr][/table]
[font=Arial]注意:soap:address将会变成Server的IP地址[/font]
[font=Arial][/font]
[url=http://ServerIP:port/SayHi/services/SayHi/SayHello?arg0=bldmickey][font=Arial][size=2][color=#000000]http://ServerIP:port/SayHi/services/SayHi/SayHello?arg0=bldmickey[/color][/size][/font][/url]
[table][tr][td][url=http://211.99.203.102:7777/SayHi/services/SayHi/SayHello?arg0=bldmickey##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <soap:Envelope xmlns:soap="[b]http://schemas.xmlsoap.org/soap/envelope/[/b]">[/font]
[url=http://211.99.203.102:7777/SayHi/services/SayHi/SayHello?arg0=bldmickey##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <soap:Body>[/font]
[url=http://211.99.203.102:7777/SayHi/services/SayHi/SayHello?arg0=bldmickey##][b][font=Arial][color=#000000]-[/color][/font][/b][/url][font=Arial] <ns2:SayHelloResponse xmlns:ns2="[b]http://example.stp.eclipse.org/[/b]">[/font]
[font=Arial]  <return>Hello: bldmickey</return> [/font]
[font=Arial]  </ns2:SayHelloResponse>[/font]
[font=Arial]  </soap:Body>[/font]
[font=Arial]  </soap:Envelope>[/font]
[/td][/tr][/table]
[font=Arial][/font]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.