WebService接口教程(附EOS的wsdl快捷開發(fā))

1、作用:應(yīng)用程序之間的交流的橋梁
2、簡單實(shí)例一:(純Java代碼實(shí)現(xiàn))
2.1、新建一個(gè)java項(xiàng)目(我用的的Eclipse的進(jìn)一步封裝版EOS,此列與開發(fā)工具無關(guān))
2.2、創(chuàng)建如下目錄及Java類和接口

2017-07-06_180317.png

其中sayHello.java為接口,代碼如下:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
//注意加注釋
@WebService
public interface sayHello {
    @WebMethod
    public  void say();
    @WebMethod
    public  void set(@WebParam(name = "arg") String arg);
}

sayHelloImpl.java為sayHello接口實(shí)現(xiàn)類,代碼如下:

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class sayHelloImpl implements sayHello {
    public String yuju = new String();
    @Override
    @WebMethod
    public void say() {
        System.out.println("我想說:"+yuju);
    }
    @Override
    @WebMethod
    public void set(String arg) {
        yuju = arg;
    }
}

server.java為服務(wù)類,用于啟動(dòng)服務(wù),代碼如下:

import javax.xml.ws.Endpoint;

public class server {
    public static void main(String[] args) {
        server server = new server();
        sayHelloImpl s = new sayHelloImpl();
        Endpoint.publish("http://127.0.0.1:8080/say", s);   
    }
}

client.java為客戶端類,用于處理wsdl接口的(處理別人提供的接口),這個(gè)地方不便于演示(此處我用被注釋的java代碼測試),因?yàn)橐粋€(gè)服務(wù)器啟動(dòng)服務(wù)之后就不能另行運(yùn)行這個(gè)類連接了,如果要測試,需用兩臺(tái)服務(wù)器,代碼粘貼進(jìn)來如下:

import javax.sound.midi.Receiver;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class client {
    public static void main(String[] args) {
        /*String yuju = new String();
        sayHello s = new sayHelloImpl();
        yuju = "我愛你";
        s.set(yuju);
        s.say();*/
        client c =new client();
        JaxWsProxyFactoryBean j =new JaxWsProxyFactoryBean();
        j.setServiceClass(Receiver.class);
        j.setAddress("Http://127.0.0.1:8080/say");
        sayHello r =(sayHello)j.create();
        r.set("我愛你!");
        r.say();    
    }
}

注意:如果運(yùn)用客戶端程序處理別人的接口需要引入一個(gè)jar包:cxf-2.7.11.jar,此jar包不能與服務(wù)放在一起,不然會(huì)有干擾報(bào)錯(cuò)
2.3、測試
2.3.1、運(yùn)行服務(wù)程序

2017-07-06_182328.png

該接口綁定地址及端口為:http://127.0.0.1:8080/say,我們可以在瀏覽器上訪問:http://127.0.0.1:8080/say?wsdl測試一下
2.3.2、瀏覽器測試

2017-07-06_182603.png

這表明接口發(fā)布正常
2.3.3、java代碼測試

public static void main(String[] args) {
        String yuju = new String();
        sayHello s = new sayHelloImpl();
        yuju = "我愛你";
        s.set(yuju);
        s.say();
    }

運(yùn)行代碼可得到如下結(jié)果:

2017-07-06_183035.png

此圖說明整個(gè)接口代碼沒有問題

2.4、總結(jié):
到此一個(gè)最簡單的webservice接口已經(jīng)開發(fā)好了,其它復(fù)雜的接口都是基于這個(gè)框架開發(fā)出來的,復(fù)雜的接口無非就是加一些數(shù)據(jù)庫訪問,復(fù)雜的邏輯處理,日志處理、文件處理、緩存處理等,但這些東西要用代碼實(shí)現(xiàn)對(duì)java功底不是很深厚的程序員來說是比較困難的,但不要緊,普元公司出的一個(gè)中間件EOS對(duì)于開發(fā)接口是非常簡單的,下面我就來演示一下EOS如何簡單快速開發(fā)接口。

2.5、擴(kuò)展:
上面演示了一個(gè)簡單的接口發(fā)布,但這個(gè)發(fā)布是基于java類運(yùn)行的,如果想開發(fā)獨(dú)立服務(wù)的接口,就需要把代碼放入服務(wù)器(我們用tomcat演示),但以上代碼放在服務(wù)器里,啟動(dòng)服務(wù)器是沒有效果的,需要做如下操作:
2.5.1、新建一個(gè)動(dòng)態(tài)web項(xiàng)目:

2017-08-17_174950.png

2.5.2、把之前寫的代碼放入 java Resources/src/[自定義包名]里
2.5.3、在包中新建一個(gè)publish類(監(jiān)聽器),類的代碼如下:

package com;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.xml.ws.Endpoint;

/**
 * Servlet implementation class publish
 */
@WebServlet(value = "",loadOnStartup = 0)
public class publish extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public publish() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Servlet#init(ServletConfig)
     */
    public void init() throws ServletException {
        // TODO Auto-generated method stub
        server server = new server();
        sayHelloImpl s = new sayHelloImpl();
        String address = "http://127.0.0.1:8080/say";
        Endpoint.publish(address, s);
        System.out.println("服務(wù)啟動(dòng)成功");
    }

}

2.5.4、把項(xiàng)目打包(war包),放入tomcat服務(wù)器中,啟動(dòng)服務(wù)器,即可部署。
2.5.5、webserver的開發(fā)不在細(xì)講,想要繼續(xù)深入了解,請(qǐng)自行找相關(guān)教程看,看到這,一個(gè)基本的接口開發(fā)過程應(yīng)該是已經(jīng)清楚了。

3、EOS開發(fā)接口
未完,待續(xù)。。。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,558評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,992評(píng)論 19 139
  • 01 五維話術(shù) 在任何場景好好說話(全息話術(shù)都是啥,和關(guān)系) 話術(shù)能力是全息的 任何時(shí)候都能好好說話 (1)具備并...
    8fd53860e25f閱讀 3,456評(píng)論 1 5
  • 我是新來的。奉上我的作品當(dāng)做見面禮! 《情思》 芳徑閑陰翠柳稀,玉池芙蓉頭點(diǎn)低。 幽山琴瑟...
    翟佳慶閱讀 212評(píng)論 0 0
  • 要是我說,36歲的我,從來沒被男人碰過,我估計(jì)一千個(gè)人里沒有一個(gè)人信的,我要是說我還是處女,估計(jì)所有人都嗤之以鼻。...
    微明的清晨閱讀 233評(píng)論 0 0