一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

java WebService axis測試小例子

 雨憶 2008-01-24
java WebService測試小例子
2008-01-11 10:06
在朋友的幫助下,寫出了一個webService的小例子,這個webService是基于axis2寫的,寫出來,作為備忘。

首先去Apache官方下載axis,我用的是axis2-1.2這個版本,最新是axis2-1.3的版本,但是1.3需要JDK1.5的支持,我本機(jī)是JDk1.4,所以我用axis2-1.2作為ws(web service)的服務(wù)。

把下載的war包放到tomcat的webapps目錄,啟動tomcat服務(wù),在瀏覽器地址欄輸入http://localhost:8080/axis2/(根據(jù)每個人的tomcat配置的不同,這個路徑可能不同) ,如果出現(xiàn)下面界面就說明ws服務(wù)沒有問題了。

下面編寫java的ws服務(wù)
先編寫服務(wù)器端的,從最簡單的hello,world開始,工程如下圖:

Hello.java
package com;

public class Hello {
    public String hw() {
        return "hello,world";
    }
}


在再src下面建一個meta-inf的文件夾,創(chuàng)建一個services.xml的文件,文件內(nèi)容如下:
<service name="Hello">
    <Description>
        helloword example description
    </Description>
    <parameter name="ServiceClass" locked="false">com.Hello</parameter>
    <operation name="hw">
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>
</service>

在上面的xml描述中,com.Hello是指你建立的類名稱,hw是對應(yīng)的方法,Hello是對應(yīng)的服務(wù)名稱。
把這個工程打包為jar文件,然后把擴(kuò)展名jar改為aar,放到TomCat目錄\webapp\axis2\WEB-INF\services的目錄下面,啟動tomcat服務(wù)。

在地址欄輸入:http://localhost:8080/axis2/services/listServices ,如果服務(wù)正常,在瀏覽器頁面中會出現(xiàn)處于Active狀態(tài)的Hello的服務(wù)名稱。如圖示:

客戶端調(diào)用
目前我用了2種調(diào)用方法
Client.java
package com;

import org.apache.axiom.om.OMElement;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.Iterator;

public class Client {
    //

    public static void main(String[] args) throws RemoteException, ServiceException, MalformedURLException {
        /* **************** 調(diào)用方法1 *********************** */
        RPCServiceClient rpcClient = new RPCServiceClient();
        Options opt = new Options();
        opt.setTo(new EndpointReference("http://localhost:8080/axis2/services/Hello")); //服務(wù)地址
        opt.setAction("urn:hw"); //方法
        rpcClient.setOptions(opt);
        OMElement element = rpcClient.invokeBlocking(new QName("http://com", "hw"), new Object[]{null}); //null表示沒有參數(shù)傳遞

        Iterator values = element.getChildrenWithName(new QName("http://com", "return")); //return表示有返回值
        while (values.hasNext()) { //遍歷出獲取的數(shù)據(jù)
            OMElement omElement = (OMElement) values.next();
            System.out.println(omElement.getText());
        }

         /* **************** 調(diào)用方法2 *********************** */
        String method = "hw";
        Service service = new Service();
        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(new java.net.URL("http://localhost:8080/axis2/services/Hello"));
        call.setOperationName(new QName("http://com/", method));
        call.setUseSOAPAction(true);
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
        call.setSOAPActionURI("http://com/GetServerList");
        String k = (String)call.invoke(new Object[]{}); //因?yàn)榉祷刂凳荢tring類型,所以這里調(diào)用的返回值也是String類型
        System.out.println(">>> "+k); //返回值輸出

    }
}


測試結(jié)果:


如果我把卡巴斯基打開,會出現(xiàn)如下的錯誤:
log4j:WARN No appenders could be found for logger (org.apache.axis2.util.Loader).
log4j:WARN Please initialize the log4j system properly.
org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
    at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
    at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:75)
    at com.Client.main(Client.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

Exception in thread "main"

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本在线高清精品人妻| 成人日韩在线播放视频| 国产午夜福利片在线观看| 国产一区二区精品高清免费| 国产女性精品一区二区三区| 欧美日韩国产免费看黄片| 91日韩欧美在线视频| 黑丝国产精品一区二区| 99久久精品国产日本| 欧美黄色成人真人视频| 亚洲国产精品肉丝袜久久| 国产欧美亚洲精品自拍| 中国美女草逼一级黄片视频| 美女极度色诱视频在线观看| 熟妇人妻av中文字幕老熟妇| 黑人巨大精品欧美一区二区区| 欧美日韩精品一区二区三区不卡| 国产精品午夜一区二区三区| 日韩一区二区三区有码| 欧美一区二区三区不卡高清视| 欧美精品一区久久精品| 亚洲中文字幕亲近伦片| 亚洲淫片一区二区三区| 日韩人妻欧美一区二区久久| 日韩高清毛片免费观看| 午夜福利大片亚洲一区| 中文字幕av诱惑一区二区| 黄片三级免费在线观看| 日本不卡一本二本三区| 午夜精品黄片在线播放| 欧美日韩精品视频在线| 国产一区二区三区色噜噜| 日韩蜜桃一区二区三区| 精品国产品国语在线不卡| 国内尹人香蕉综合在线| 国产一区二区熟女精品免费 | 亚洲中文字幕有码在线观看| 日韩精品在线观看完整版| 国产精品久久精品国产| 国产欧美高清精品一区| 99视频精品免费视频播放|