Terry.Li-彬

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
          1、選擇要轉換的java文件,生成class

            2、寫wsdd

            3、發布

            剩下的就只有調用了wsdl2java

            我原來的系統是CICS的,對后臺封裝了一層,現在用webservice再封裝一層,前臺頁面,控制,數據傳輸,數據處理統統都可以分開了,爽

            //以下是從網上找的關于AXIS的入門教程

            一、Axis安裝 1、環境 J2SE SDK 1.3 or 1.4: 我使用 1.4.2 Servlet Container: 我使用的Tomcat 5.0

            


            2、到 http://ws.apache.org/Axis/網站下載Axis安裝包

            3、解壓縮安裝包,將Axis_UNZIP_PATH\Axis-version\webapps下的Axis包拷貝到TOMCAT_HOME\webapps\下,以下約定Axis_HOME為該TOMCAT_HOME\webapps\Axis目錄

            4、啟動tomcat,訪問http://localhost:8080/Axis 檢查安裝是否成功

            5、以上步驟執行成功,可以開發webservice例子了

            Axis支持三種web service的部署和開發,分別為:

            1、Dynamic Invocation Interface ( DII)

            2、Stubs方式

            3、Dynamic Proxy方式

            二、編寫DII(Dynamic Invocation Interface )方式web服務

            1.編寫服務端程序HelloClient

            public class HelloClient

            {

            public String getName(String name)

            {

            return "hello "+name;

            }

            }

            2、將源碼拷貝到Axis_HOME下,重命名為 HelloClient.jws

            3、訪問連接http://localhost:8080/Axis/HelloClient.jws?wsdl,頁面顯示Axis自動生成的wsdl

            4、編寫訪問服務的客戶端 TestHelloClient.java

            import org.apache.Axis.client.Call;

            import org.apache.Axis.client.Service;

            import javax.xml.namespace.QName;

            import javax.xml.rpc.ServiceException;

            import java.net.MalformedURLException;

            import java.rmi.RemoteException;

            public class SayHelloClient2

            {

            public static void main(String[] args)

            {

            try

            {

            String endpoint =

            "http://localhost:8080/Axis/HelloClient.jws";

            Service service = new Service();

            Call call = null;

            call = (Call) service.createCall();

            call.setOperationName(new QName(

            "http://localhost:8080/Axis/HelloClient.jws",

            "getName"));

            call.setTargetEndpointAddress

            (new java.net.URL(endpoint));

            String ret = (String) call.invoke(new Object[]

            {"zhangsan"});

            System.out.println("return value is " + ret);

            }

            catch (Exception ex)

            {

            ex.printStackTrace();

            }

            }

            }

            三、編寫Dynamic Proxy方式訪問服務

            1、編寫部署服務端程序,同上邊DII方式,本次仍使用上邊部署的HelloClient

            2、編寫代理接口

            public interface HelloClientInterface

            extends java.rmi.Remote

            {

            public String getName(String name)

            throws java.rmi.RemoteException;

            }

            3、編寫并執行客戶端程序TestHelloClient.java

            import javax.xml.rpc.Service;

            import javax.xml.rpc.ServiceFactory;

            import java.net.URL;

            import javax.xml.namespace.QName;

            public class TestHelloClient

            {

            public static void main(String[] args)

            {

            try

            {

            String wsdlUrl =

            "http://localhost:8080/Axis/HelloClient.jws?wsdl";

            String nameSpaceUri =

            "http://localhost:8080/Axis/HelloClient.jws";

            String serviceName = "HelloClientService";

            String portName = "HelloClient";

            ServiceFactory serviceFactory =

            ServiceFactory.newInstance();

            Service afService =

            serviceFactory.createService(new URL(wsdlUrl),

            new QName(nameSpaceUri, serviceName));

            HelloClientInterface proxy = (HelloClientInterface)

            afService.getPort(new QName(

            nameSpaceUri, portName),

            HelloClientInterface.class);

            System.out.println

            ("return value is "+proxy.getName("john") ) ;

            }catch(Exception ex)

            {

            ex.printStackTrace() ;

            }

            }

            }

            四、編寫wsdd發布web服務,編寫stub client訪問web服務

            1、編寫服務端程序server,SayHello.java,編譯server.SayHello.java

            package server;

            public class SayHello

            {

            public String getName(String name)

            {

            return "hello "+name;

            }

            }

            2.編寫LogHandler.java

            import org.apache.Axis.AxisFault;

            import org.apache.Axis.Handler;

            import org.apache.Axis.MessageContext;

            import org.apache.Axis.handlers.BasicHandler;

            import java.util.Date;

            public class LogHandler

            extends BasicHandler

            {

            public void invoke

            (MessageContext msgContext)

            throws AxisFault

            {

            /** Log an access each time

            we get invoked.

            */

            try {

            Handler serviceHandler

            = msgContext.getService();

            Integer numAccesses =

            (Integer)serviceHandler.getOption("accesses");

            if (numAccesses == null)

            numAccesses = new Integer(0);

            numAccesses = new Integer

            (numAccesses.intValue() + 1);

            Date date = new Date();

            String result =

            date + ": service " +

            msgContext.getTargetService() +

            " accessed " + numAccesses + " time(s).";

            serviceHandler.setOption

            ("accesses", numAccesses);

            System.out.println(result);

            } catch (Exception e)

            {

            throw AxisFault.makeFault(e);

            }

            }

            }

            3、編寫wsdd文件

            deploy.wsdd

            <deployment xmlns=

            "http://xml.apache.org/Axis/wsdd/"

            xmlns:java=

            "http://xml.apache.org/Axis/wsdd/providers/java">

            <handler name="print" type="java:LogHandler"/>

            <service name="sayhello"

            provider="java:RPC">

            <requestFlow>

            <handler type="print"/>

            </requestFlow>

            <parameter name="className"

            value="server.SayHello"/>

            <parameter name="allowedMethods"

            value="*"/>

            </service>

            </deployment>

            3、將編譯后的文件拷貝到Axis_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\Axis\WEB-INF\classes

            4、發布服務:

            java org.apache.Axis.client.AdminClient deploy.wsdd

            5、生成client stub文件

            a:方式1

            將SayHello.java拷貝到Axis_HOME/下,重命名為SayHello.jws,

            執行下面的命令生存client stub

            java org.apache.Axis.wsdl.WSDL2Java

            -p client

            http://localhost:8080

            /Axis/services/SayHello.jws?wsdl

            b:方式2

            執行如下命令生成SayHello.wsdl

            java org.apache.Axis.wsdl.Java2WSDL

            -oSayHello.wsdl -lhttp://localhost:8080

            /Axis/services/SayHello -nsayhello server.SayHello

            執行如下命令生成client stub

            java org.apache.Axis.wsdl.WSDL2Java

            SayHello.wsdl

            -p client

            生成的stub client文件列表為:

            1.SayHello.java

            2.SayHelloService.java。

            3.SayHelloServiceLocator.java

            4.SayHelloSoapBindingStub.java

            6、編寫客戶端程序,編譯并執行

            public class SayHelloClient

            {

            public static void main(String[] args)

            {

            try

            {

            SayHelloService service = new client.

            SayHelloServiceLocator();

            client.SayHello_PortType

            client = service.getSayHello();

            String retValue=client.getName("zhangsan");

            System.out.println(retValue);

            }

            catch (Exception e)

            {

            System.err.println

            ("Execution failed. Exception: " + e);

            }

            }

            }

            您也可以寫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="adminPassword" value="admin"/>

            <parameter name="attachments.implementation"

            value="org.apache.axis.attachments.AttachmentsImpl"/>

            <parameter name="sendXsiTypes" value="true"/>

            <parameter name="sendMultiRefs" value="true"/>

            <parameter name="sendXMLDeclaration" value="true"/>

            <parameter name="axis.sendMinimizedElements" value="true"/>

            <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="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>

            <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>

            <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

            <handler name="print" type="java:stub.LogHandler"/>

            <service name="sayhello" provider="java:RPC">

            <requestFlow>

            <handler type="print"/>

            </requestFlow>

            <parameter name="className"

            value="stub.server.SayHello"/>

            <parameter name="allowedMethods"

            value="*"/>

            </service>

            <transport name="http">

            <requestFlow>

            <handler type="URLMapper"/>

            <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>

            </requestFlow>

            </transport>

            <transport name="local">

            <responseFlow>

            <handler type="LocalResponder"/>

            </responseFlow>

            </transport>

            </deployment>

          本文來自:http://www.linuxpk.com/46235.html
          posted on 2007-11-21 18:09 禮物 閱讀(352) 評論(0)  編輯  收藏 所屬分類: web service
          主站蜘蛛池模板: 板桥市| 济源市| 墨江| 平泉县| 肃北| 长岛县| 和龙市| 渑池县| 威远县| 洱源县| 库车县| 巴彦淖尔市| 虎林市| 高青县| 杭锦后旗| 莒南县| 平乐县| 新乡市| 韶山市| 哈尔滨市| 曲沃县| 娱乐| 博罗县| 滨州市| 体育| 福鼎市| 桓台县| 沙田区| 漯河市| 张家口市| 炉霍县| 岳阳县| 甘泉县| 静安区| 商水县| 田东县| 丘北县| 循化| 台安县| 济南市| 青浦区|