Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
          今天終于搞定,貼出來分享一下
          1、在www.apache.org上下載Axis1.4,將解壓后的Axis目錄文件復制到%TOMCATHOME%\webapps目錄下
          2、重新啟動Tomcat,訪問http://localhost:8080/axis,如果能訪問,表示Axis環境安裝成功
          3、在eclipse下建立webproject,將axis的jar包導入



          2JavaBean,分別叫做Person.javaBook.java,代碼如下
          Book.java
          package?com.lucky.axis.service;

          public?class?Book?{
          ????
          private?String?bookname;
          ????
          private?Long?isbn;
          ????
          private?float?price;
          ????
          private?Integer?pages;
          ????
          public?String?getBookname()?{
          ????????
          return?bookname;
          ????}

          ????
          public?void?setBookname(String?bookname)?{
          ????????
          this.bookname?=?bookname;
          ????}

          ????
          public?Long?getIsbn()?{
          ????????
          return?isbn;
          ????}

          ????
          public?void?setIsbn(Long?isbn)?{
          ????????
          this.isbn?=?isbn;
          ????}

          ????
          public?float?getPrice()?{
          ????????
          return?price;
          ????}

          ????
          public?void?setPrice(float?price)?{
          ????????
          this.price?=?price;
          ????}

          ????
          public?Integer?getPages()?{
          ????????
          return?pages;
          ????}

          ????
          public?void?setPages(Integer?pages)?{
          ????????
          this.pages?=?pages;
          ????}


          }



          Person.java
          package?com.lucky.axis.service;

          import?java.util.Map;

          public?class?Person?{
          ????
          private?String?name;
          ????
          private?int?age;
          ????
          private?Map?skill;
          ????
          private?Book?mybook;
          ????
          public?String?getName()?{
          ????????
          return?name;
          ????}

          ????
          public?void?setName(String?name)?{
          ????????
          this.name?=?name;
          ????}

          ????
          public?int?getAge()?{
          ????????
          return?age;
          ????}

          ????
          public?void?setAge(int?age)?{
          ????????
          this.age?=?age;
          ????}

          ????
          public?Map?getSkill()?{
          ????????
          return?skill;
          ????}

          ????
          public?void?setSkill(Map?skill)?{
          ????????
          this.skill?=?skill;
          ????}

          ????
          public?Book?getMybook()?{
          ????????
          return?mybook;
          ????}

          ????
          public?void?setMybook(Book?mybook)?{
          ????????
          this.mybook?=?mybook;
          ????}


          }



          ? 建立服務器端代碼,命名為PersonInfoService.java,實現三個method,分別為public String getPersonInfo(Person person)public Book setBookInfo(String bookname, Long isbn)public Person getPersonInfo(),以下為全部代碼:

          package?com.lucky.axis.service;

          import?java.util.HashMap;
          import?java.util.Map;

          public?class?PersonInfoService?{
          ????
          public?PersonInfoService()?{
          ????}


          ????
          public?String?getPersonInfo(Person?person)?{
          ????????String?personinfo?
          =?"";
          ????????personinfo?
          =?"Hello,?"?+?person.getName()
          ????????????????
          +?"?!?This?is?you?information\r\n";
          ????????personinfo?
          =?personinfo?+?"Ages:?"?+?person.getAge()?+?"\r\n";
          ????????Map?skill?
          =?person.getSkill();
          ????????String?strskill?
          =?"";
          ????????strskill?
          =?strskill?+?skill.get("NAME")?+?"?:?you?have?"
          ????????????????
          +?skill.get("YEAR")?+?"?years?experience!\r\n";
          ????????personinfo?
          =?personinfo?+?strskill;
          ????????personinfo?
          =?personinfo?+?"Book?Name?:?"
          ????????????????
          +?person.getMybook().getBookname()?+?"\r\n";
          ????????personinfo?
          =?personinfo?+?"ISBN?:?"
          ????????????????
          +?person.getMybook().getIsbn()?+?"\r\n";
          ????????personinfo?
          =?personinfo?+?"You?pay?$"
          ????????????????
          +?person.getMybook().getPrice()?+?"?for?this?book.\r\n";
          ????????personinfo?
          =?personinfo?+?"This?book?have?"
          ????????????????
          +?person.getMybook().getPages()?+?"?pages.\r\n";
          ????????
          return?personinfo;
          ????}


          ????
          public?Book?setBookInfo(String?bookname,?Long?isbn)?{
          ????????Book?book?
          =?new?Book();
          ????????book.setBookname(bookname);
          ????????book.setIsbn(isbn);
          ????????book.setPages(
          new?Integer(265));
          ????????book.setPrice((
          float)?25.65);
          ????????
          return?book;
          ????}


          ????
          public?Person?getPersonInfo()?{
          ????????Person?person?
          =?new?Person();
          ????????person.setName(
          "Aaron");
          ????????person.setAge(
          26);
          ????????Map?skill?
          =?new?HashMap();
          ????????skill.put(
          "NAME",?"JAVA");
          ????????skill.put(
          "YEAR",?"3");
          ????????person.setSkill(skill);
          ????????Book?book?
          =?new?Book();
          ????????book.setBookname(
          "<Thinking?in?Java>");
          ????????book.setIsbn(
          new?Long(456256821));
          ????????book.setPages(
          new?Integer(982));
          ????????book.setPrice((
          float)?99.8);
          ????????person.setMybook(book);
          ????????
          return?person;
          ????}


          }


          將編譯好的Java類直接放在%Tomcat%\webapps\axis\WEB-INFO\classess\目錄下。注意將整個包路徑復制到上述目錄中





          在%Tomcat%\webapps\axis\WEB-INF\classes目錄下建立 server-config.wsdd 文件,內容如下
          <?xml?version="1.0"?encoding="UTF-8"?>
          <deployment?xmlns="http://xml.apache.org/axis/wsdd/"
          ????xmlns:java
          ="http://xml.apache.org/axis/wsdd/providers/java">
          ????
          <globalConfiguration>
          ????????
          <parameter?name="sendMultiRefs"?value="true"?/>
          ????????
          <parameter?name="disablePrettyXML"?value="true"?/>
          ????????
          <parameter?name="adminPassword"?value="admin"?/>
          ????????
          <parameter?name="attachments.Directory"
          ????????????value
          ="C:\Tomcat?5.0?(iplanetldap)\webapps\axis\WEB-INF\attachments"?/>
          ????????
          <parameter?name="axis.servicesPath"?value="/mossWS/"?/>
          ????????
          <parameter?name="dotNetSoapEncFix"?value="true"?/>
          ????????
          <parameter?name="enableNamespacePrefixOptimization"
          ????????????value
          ="false"?/>
          ????????
          <parameter?name="sendXMLDeclaration"?value="true"?/>
          ????????
          <parameter?name="sendXsiTypes"?value="true"?/>
          ????????
          <parameter?name="attachments.implementation"
          ????????????value
          ="org.apache.axis.attachments.AttachmentsImpl"?/>
          ????????
          <requestFlow>
          ????????????
          <handler?type="java:org.apache.axis.handlers.JWSHandler">
          ????????????????
          <parameter?name="scope"?value="session"?/>
          ????????????
          </handler>
          ????????????
          <handler?type="java:org.apache.axis.handlers.JWSHandler">
          ????????????????
          <parameter?name="scope"?value="request"?/>
          ????????????????
          <parameter?name="extension"?value=".jwr"?/>
          ????????????
          </handler>
          ????????
          </requestFlow>
          ????
          </globalConfiguration>
          ????
          <handler?name="Authenticate"
          ????????type
          ="java:org.apache.axis.handlers.SimpleAuthenticationHandler"?/>
          ????
          <handler?name="LocalResponder"
          ????????type
          ="java:org.apache.axis.transport.local.LocalResponder"?/>
          ????
          <handler?name="URLMapper"
          ????????type
          ="java:org.apache.axis.handlers.http.URLMapper"?/>
          ????
          <handler?name="soapmonitor"
          ????????type
          ="java:org.apache.axis.handlers.SOAPMonitorHandler">
          ????????
          <parameter?name="wsdlURL"
          ????????????value
          ="/axis/SOAPMonitorService-impl.wsdl"?/>
          ????????
          <parameter?name="namespace"
          ????????????value
          ="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"?/>
          ????????
          <parameter?name="serviceName"?value="SOAPMonitorService"?/>
          ????????
          <parameter?name="portName"?value="Demo"?/>
          ????
          </handler>
          ????
          <service?name="AdminService"?provider="java:MSG">
          ????????
          <parameter?name="allowedMethods"?value="AdminService"?/>
          ????????
          <parameter?name="enableRemoteAdmin"?value="false"?/>
          ????????
          <parameter?name="className"?value="org.apache.axis.utils.Admin"?/>
          ????????
          <namespace>http://xml.apache.org/axis/wsdd/</namespace>
          ????
          </service>
          ????
          <service?name="SOAPMonitorService"?provider="java:RPC">
          ????????
          <parameter?name="allowedMethods"?value="publishMessage"?/>
          ????????
          <parameter?name="className"
          ????????????value
          ="org.apache.axis.monitor.SOAPMonitorService"?/>
          ????????
          <parameter?name="scope"?value="Application"?/>
          ????
          </service>
          ????
          <service?name="AxisDemo"?provider="java:RPC">
          ????????
          <parameter?name="allowedMethod"?value="*"></parameter>
          ????????
          <parameter?name="className"
          ????????????value
          ="com.lucky.axis.service.PersonInfoService">
          ????????
          </parameter>
          ????????
          <beanMapping?qname="myNS:Person"?xmlns:myNS="urn:PersonInfo"
          ????????????languageSpecificType
          ="java:com.lucky.axis.service.Person"?/>
          ????????
          <beanMapping?qname="myNS:Book"?xmlns:myNS="urn:PersonBookInfo"
          ????????????languageSpecificType
          ="java:com.lucky.axis.service.Book"?/>
          ????
          </service>
          ????
          <transport?name="http">
          ????????
          <requestFlow>
          ????????????
          <handler?type="URLMapper"?/>
          ????????????
          <handler
          ????????????????
          type="java:org.apache.axis.handlers.http.HTTPAuthHandler"?/>
          ????????
          </requestFlow>
          ????????
          <parameter?name="qs:list"
          ????????????value
          ="org.apache.axis.transport.http.QSListHandler"?/>
          ????????
          <parameter?name="qs:wsdl"
          ????????????value
          ="org.apache.axis.transport.http.QSWSDLHandler"?/>
          ????????
          <parameter?name="qs.list"
          ????????????value
          ="org.apache.axis.transport.http.QSListHandler"?/>
          ????????
          <parameter?name="qs.method"
          ????????????value
          ="org.apache.axis.transport.http.QSMethodHandler"?/>
          ????????
          <parameter?name="qs:method"
          ????????????value
          ="org.apache.axis.transport.http.QSMethodHandler"?/>
          ????????
          <parameter?name="qs.wsdl"
          ????????????value
          ="org.apache.axis.transport.http.QSWSDLHandler"?/>
          ????
          </transport>
          ????
          <transport?name="local">
          ????????
          <responseFlow>
          ????????????
          <handler?type="LocalResponder"?/>
          ????????
          </responseFlow>
          ????
          </transport>
          </deployment>

          其中
          <service?name="AxisDemo"?provider="java:RPC">
          ????????
          <parameter?name="allowedMethod"?value="*"></parameter>
          ????????
          <parameter?name="className"
          ????????????value
          ="com.lucky.axis.service.PersonInfoService">
          ????????
          </parameter>
          ????????
          <beanMapping?qname="myNS:Person"?xmlns:myNS="urn:PersonInfo"
          ????????????languageSpecificType
          ="java:com.lucky.axis.service.Person"?/>
          ????????
          <beanMapping?qname="myNS:Book"?xmlns:myNS="urn:PersonBookInfo"
          ????????????languageSpecificType
          ="java:com.lucky.axis.service.Book"?/>
          ????
          </service>
          是配置服務端的WebService,name="AxisDemo" 是WebService的名稱,使用http://localhost:8080/axis/services/AxisDemo?wsdl來訪問,name="allowedMethod" 表示服務類中那些方法需要封裝,value="*" 表示所有的方法都封裝,如果值封裝其中部分方法,需要把方法名稱列出來,用“,”逗號分割,name="className" 表示定義WebService服務端的類,value="com.lucky.axis.service.PersonInfoService" 表示將這個類作為WebService類封裝,<beanMapping qname="myNS:Person" xmlns:myNS="urn:PersonInfo"
          ???languageSpecificType="java:com.lucky.axis.service.Person" />這個表示類中需要引入的其他類
          重新啟動Tomcat5.5,訪問http://localhost:8080/axis/services/AxisDemo?wsdl,可以看到該Web ServiceWSDL描述信息



          ?

          編寫客戶端測試類,命名為Client.java。在該類中分別對PersonInfoService.java所提供的方法進行調用,代碼如下:

          package?com.lucky.axis.client;

          import?java.util.HashMap;
          import?java.util.Map;

          import?javax.xml.namespace.QName;

          import?org.apache.axis.client.Call;
          import?org.apache.axis.client.Service;
          import?org.apache.axis.encoding.ser.BeanDeserializerFactory;
          import?org.apache.axis.encoding.ser.BeanSerializerFactory;

          import?com.lucky.axis.service.Book;
          import?com.lucky.axis.service.Person;

          public?class?Client?{
          ????
          public?Client()?{
          ????}


          ????
          public?static?void?main(String[]?args)?throws?Exception?{
          //????????if?(args.length?<?1)?{
          //????????????System.out.println("錯誤:缺少參數");
          //????????????System.exit(0);
          //????????}
          ????????
          //?Web服務的URL
          ????????String?url?=?"http://localhost:8080/axis/services/AxisDemo";
          ????????Service?service?
          =?new?Service();
          ????????Call?call?
          =?(Call)?service.createCall();
          ????????call.setTargetEndpointAddress(url);

          ????????
          //?注冊序列化/反序列化器
          ????????QName?qn?=?new?QName("urn:PersonInfo",?"Person");
          ????????call.registerTypeMapping(Person.
          class,?qn,?new?BeanSerializerFactory(
          ????????????????Person.
          class,?qn),
          ????????????????
          new?BeanDeserializerFactory(Person.class,?qn));
          ????????QName?qnb?
          =?new?QName("urn:PersonBookInfo",?"Book");
          ????????call.registerTypeMapping(Book.
          class,?qnb,?new?BeanSerializerFactory(
          ????????????????Book.
          class,?qnb),?new?BeanDeserializerFactory(Book.class,?qnb));

          ????????
          //?設置調用方法
          ????????call.setOperationName(new?javax.xml.namespace.QName("http://test",
          ????????????????
          "getPersonInfo"));
          ????????Person?person?
          =?new?Person();
          ????????person.setName(
          "Kiah?Han");
          ????????person.setAge(
          26);
          ????????Map?map?
          =?new?HashMap();
          ????????map.put(
          "NAME",?"李彬");
          ????????map.put(
          "YEAR",?new?Integer(3));
          ????????person.setSkill(map);
          ????????Book?book?
          =?new?Book();
          ????????book.setBookname(
          "<Thinking?in?Java>");
          ????????book.setIsbn(
          new?Long(123456789));
          ????????book.setPrice((
          float)?25.98);
          ????????book.setPages(
          new?Integer(925));
          ????????person.setMybook(book);

          ????????
          //?Web服務調用
          ????????java.lang.Object?_resp?=?call.invoke(new?java.lang.Object[]?{?person?});

          ????????
          //?輸出到屏幕
          ????????System.out.println(_resp.toString());

          ????????System.out
          ????????????????.println(
          "------------Starting?setBookInfo()---------------------");
          ????????call.setOperationName(
          new?javax.xml.namespace.QName("http://test",
          ????????????????
          "setBookInfo"));
          ????????java.lang.Object?_resbook?
          =?call.invoke(new?java.lang.Object[]?{
          ????????????????
          "<Spring?pro>",?new?Long(987654321)?}
          );

          ????????Book?mybook?
          =?(Book)?_resbook;

          ????????System.out.println(mybook.getBookname());
          ????????System.out.println(mybook.getIsbn());
          ????????System.out.println(mybook.getPrice());
          ????????System.out.println(mybook.getPages());
          ????????System.out
          ????????????????.println(
          "------------End?setBookInfo()---------------------------");

          ????????System.out
          ????????????????.println(
          "------------Starting?getPersonInfo()---------------------");
          ????????call.setOperationName(
          new?javax.xml.namespace.QName("http://test",
          ????????????????
          "getPersonInfo"));
          ????????java.lang.Object?_resperson?
          =?call.invoke(new?java.lang.Object[]?{});

          ????????Person?aaron?
          =?(Person)?_resperson;
          ????????System.out.println(aaron.getName());
          ????????System.out.println(aaron.getAge());
          ????????Map?skill?
          =?aaron.getSkill();
          ????????System.out.println(skill.get(
          "NAME"));
          ????????System.out.println(skill.get(
          "YEAR"));
          ????????Book?aaronbook?
          =?aaron.getMybook();
          ????????System.out.println(aaronbook.getBookname());
          ????????System.out.println(aaronbook.getIsbn());
          ????????System.out.println(aaronbook.getPrice());
          ????????System.out.println(aaronbook.getPages());
          ????????System.out
          ????????????????.println(
          "------------End?getPersonInfo()---------------------");
          ????}


          }



          ???直接運行該Client.java中的main方法,運行結果如下:

          Hello, Kiah Han ! This is you information...
          Ages: 26
          李彬 : you have 3 years experience!
          Book Name : <Thinking in Java>
          ISBN : 123456789
          You pay $25.98 for this book.
          This book have 925 pages.

          ------------Starting setBookInfo()---------------------
          <Spring pro>
          987654321
          25.65
          265
          ------------End setBookInfo()---------------------------
          ------------Starting getPersonInfo()---------------------
          Aaron
          26
          JAVA
          3
          <Thinking in Java>
          456256821
          99.8
          982
          ------------End getPersonInfo()---------------------



          源碼: http://www.aygfsteel.com/Files/libin2722/axis.rar


          成功,好就到這里了,下班了,希望能給大家一點幫助

          我的聯系方式:
          qq:33614814
          e-mail:libin2722@sohu.com




          posted on 2007-11-22 18:59 禮物 閱讀(3731) 評論(2)  編輯  收藏 所屬分類: webservice

          評論

          # re: Axis1.4 開發筆記 2009-05-22 00:54 魔方網
          Thanks a lot   回復  更多評論
            

          # 文件位置好像放錯了 2012-11-20 14:58 趙光培
          在%Tomcat%\webapps\axis目錄下建立 server-config.wsdd 文件
          應該是在
          在%Tomcat%\webapps\axis\WEB-INF目錄下建立 server-config.wsdd 文件  回復  更多評論
            

          主站蜘蛛池模板: 红安县| 平湖市| 亳州市| 广德县| 郸城县| 沈阳市| 淮安市| 上杭县| 灵丘县| 乐平市| 石屏县| 浦东新区| 宁晋县| 新和县| 绥化市| 察隅县| 抚宁县| 神池县| 图们市| 邵阳县| 江口县| 天全县| 中江县| 湘潭市| 江西省| 凌海市| 东乌| 盈江县| 竹溪县| 富阳市| 阿瓦提县| 天门市| 吉水县| 旬阳县| 闽侯县| 西乡县| 怀仁县| 南汇区| 古蔺县| 喜德县| 阿拉尔市|