WebService的實(shí)現(xiàn)與調(diào)用的幾種方案

原生的WebService的實(shí)現(xiàn)方式

1汗洒、創(chuàng)建一個(gè)jar工程

2议纯、定義一個(gè)我們要發(fā)布的接口

package haiyang.yu.webservice;

import javax.jws.WebService;

/**
 * Created on 2018-04-16 8:31
 * <p>Title:  haiyang.yu.webservice</p>
 * <p>Description: </p>
 *
 * @author <a href="mailto:991138518@qq.com">yuhaiyang</a>
 * @version 1.0
 */
@WebService
public interface TimeAlarmBell {
    /**
     * 問(wèn)候當(dāng)前時(shí)間
     * @param name your name
     * @return results
     */
    String giveMeDate(String name);
}

3、實(shí)現(xiàn)接口將并實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)

package haiyang.yu.webservice;

import javax.jws.WebService;
import java.util.Date;

/**
 * Created on 2018-04-16 8:33
 * <p>Title:  haiyang.yu.webservice</p>
 * <p>Description: </p>
 *
 * @author <a href="mailto:991138518@qq.com">yuhaiyang</a>
 * @version 1.0
 */
@WebService(endpointInterface= "haiyang.yu.webservice.TimeAlarmBell",serviceName="showDate")//指定webservice所實(shí)現(xiàn)的接口以及服務(wù)名稱(chēng)
public class TimeAlarmBellImpl implements TimeAlarmBell {
    @Override
    public String giveMeDate(String name) {
        return name.concat(",您好溢谤!現(xiàn)在是北京時(shí)間:").concat(new Date().toString());
    }
}

4瞻凤、發(fā)布webservice

package haiyang.yu.webservice;

import javax.xml.ws.Endpoint;

/**
 * Created on 2018-04-16 8:36
 * <p>Title:  haiyang.yu.webservice</p>
 * <p>Description: </p>
 *
 * @author <a href="mailto:991138518@qq.com">yuhaiyang</a>
 * @version 1.0
 */
public class TimeAlarmBellPublish {

    public static void main(String[] args) {
        TimeAlarmBell showDate = new TimeAlarmBellImpl();
        //調(diào)用Endpoint的publish方法發(fā)布Web Service
        Endpoint.publish("http://192.168.10.104:8085/showDate", showDate);
        System.out.println("Web Service發(fā)布成功憨攒!");
    }
}

5、webservice的調(diào)用


package haiyang.yu.webservice;

//import org.apache.commons.lang3.concurrent.BasicThreadFactory;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * Created on 2018-04-16 8:48
 * <p>Title:  haiyang.yu.webservice</p>
 * <p>Description: </p>
 *
 * @author <a href="mailto:991138518@qq.com">yuhaiyang</a>
 * @version 1.0
 */
public class TimeAlarmBellConnection {
    
    public static void main(String[] args) {
        
//        ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(
//                1, new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(false).build());
//        scheduledThreadPoolExecutor.scheduleAtFixedRate(new Runnable() {
//            @Override
//            public void run() {
                //創(chuàng)建WSDL的URL阀参,注意不是服務(wù)地址
                URL url = null;
                try {
                    url = new URL("http://192.168.10.104:8085/showDate?wsdl");
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }

                //創(chuàng)建服務(wù)名稱(chēng)
                //1.namespaceURI - 命名空間地址
                //2.localPart - 服務(wù)視圖名
                QName qname = new QName("http://webservice.yu.haiyang/", "showDate");

                //創(chuàng)建服務(wù)視圖
                //參數(shù)解釋?zhuān)?                //1.wsdlDocumentLocation - wsdl地址
                //2.serviceName - 服務(wù)名稱(chēng)
                Service service = Service.create(url, qname);
                //獲取服務(wù)實(shí)現(xiàn)類(lèi)
                TimeAlarmBell showDate = service.getPort(TimeAlarmBell.class);
                //調(diào)用查詢方法
                String result = showDate.giveMeDate("KevinBruce");
                System.out.println(result);
//            }
//        }, 1, 2, TimeUnit.SECONDS);
        
    }
    
}

注釋掉的內(nèi)容中使用定時(shí)任務(wù)去循環(huán)調(diào)用webservice的接口了肝集,如果想要使用這個(gè)定時(shí)任務(wù),需要引入common-lang3的jar包

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>

使用axis1.4的實(shí)現(xiàn)方式

下載地址:http://archive.apache.org/dist/ws/axis/1_4/

下載axis-bin-1_4.zip 這個(gè)包

使用axis1實(shí)現(xiàn)webservice在構(gòu)建時(shí)可能會(huì)相對(duì)麻煩一些蛛壳,但是構(gòu)建成功后杏瞻,對(duì)于一些webservice的方法的實(shí)現(xiàn)就簡(jiǎn)單了很多,可以大大的提高開(kāi)發(fā)效率衙荐。

1捞挥、創(chuàng)建一個(gè)war工程(這是必須的,axis1使用war來(lái)發(fā)布接口)

2忧吟、創(chuàng)建包并定義一個(gè)接口(正常的接口砌函,不需要注解)

package haiyang.yu.axis1;

/**
 * Created on 2018-04-16 16:37
 * <p>Title:  haiyang.yu.axis1</p>
 * <p>Description: </p>
 *
 * @author <a href="mailto:991138518@qq.com">yuhaiyang</a>
 * @version 1.0
 */
public interface Hello {

    /**
     * 獲取當(dāng)前時(shí)間
     * @param user 獲取用戶
     * @return Result
     */
    String getLocalDate(String user);
}

3、給這個(gè)接口定義一個(gè)實(shí)現(xiàn)類(lèi)(該實(shí)現(xiàn)類(lèi)需要有@WebService注解)

package haiyang.yu.axis1;

import javax.jws.WebService;
import java.util.Date;

/**
 * Created on 2018-04-16 16:38
 * <p>Title:  haiyang.yu.axis1</p>
 * <p>Description: </p>
 *
 * @author <a href="mailto:991138518@qq.com">yuhaiyang</a>
 * @version 1.0
 */
@WebService
public class HelloImpl implements Hello {

    @Override
    public String getLocalDate(String user) {
        return user.concat(",您好溜族! 當(dāng)前時(shí)間為:").concat(new Date().toString());
    }

}

當(dāng)你寫(xiě)完實(shí)現(xiàn)類(lèi)的時(shí)候讹俊,你的webservice的接口就已經(jīng)實(shí)現(xiàn)了。接下來(lái)的任務(wù)就是配置了斩祭。

4劣像、配置要發(fā)布為webservice的方法

  • 修改wabapps/WEB-INF/web.xml文件(添加一個(gè)servlet映射)。
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <servlet>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
</web-app>
  • 創(chuàng)建一個(gè)server-config.wsdd文件(在文件中添加以下內(nèi)容)
<?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="dotNetSoapEncFix" value="true" />  
        <parameter name="enableNamespacePrefixOptimization" value="false" />  
        <parameter name="sendXMLDeclaration" value="true" />  
        <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl" />  
        <parameter name="sendXsiTypes" 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="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />  
    <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder" />  
    <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />  
    <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>  
  
    <!-- 想要添加或者取消修改一下內(nèi)容即可摧玫,AdminService與Version注銷(xiāo)不提供服務(wù)。 -->  
  
    <service name="SayHello" provider="java:RPC">  
        <parameter name="allowedMethods" value="*" />  
        <parameter name="className" value="haiyang.yu.axis1.HelloImpl" />  
        <namespace>http://www.yuhaiyang.com/ocean-axis/sayHello</namespace>  
    </service>  
</deployment>  

5诬像、將工程打成war 包放到j(luò)etty或者是Tomcat的webapps下,同時(shí)將axis-bin-1_4.zip包中解壓出來(lái)的文件中的webapps目錄下的內(nèi)容復(fù)制到j(luò)etty或者是Tomcat的webapps下闸婴。

6坏挠、啟動(dòng)容器我們定義的url即可。

使用axis2-1.7.7的實(shí)現(xiàn)方式

下載地址:http://axis.apache.org/axis2/java/core/download.html

下載 axis2-1.7.7-war.zip 這個(gè)包

沒(méi)使用過(guò)邪乍,后續(xù)更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末降狠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子庇楞,更是在濱河造成了極大的恐慌榜配,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吕晌,死亡現(xiàn)場(chǎng)離奇詭異蛋褥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)睛驳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)烙心,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)膜廊,“玉大人,你說(shuō)我怎么就攤上這事淫茵∽希” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵匙瘪,是天一觀的道長(zhǎng)铆铆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)辆苔,這世上最難降的妖魔是什么算灸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮驻啤,結(jié)果婚禮上菲驴,老公的妹妹穿的比我還像新娘。我一直安慰自己骑冗,他們只是感情好赊瞬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著贼涩,像睡著了一般巧涧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遥倦,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天谤绳,我揣著相機(jī)與錄音,去河邊找鬼袒哥。 笑死缩筛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的堡称。 我是一名探鬼主播瞎抛,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼却紧!你這毒婦竟也來(lái)了桐臊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晓殊,失蹤者是張志新(化名)和其女友劉穎断凶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挺物,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懒浮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砚著。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡次伶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稽穆,到底是詐尸還是另有隱情冠王,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布舌镶,位于F島的核電站柱彻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏餐胀。R本人自食惡果不足惜哟楷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望否灾。 院中可真熱鬧,春花似錦墨技、人聲如沸惩阶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)断楷。三九已至,卻和暖如春崭别,著一層夾襖步出監(jiān)牢的瞬間冬筒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工茅主, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留账千,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓暗膜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鞭衩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子学搜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評(píng)論 6 342
  • WebService介紹 首先我們來(lái)談一下為什么需要學(xué)習(xí)webService這樣的一個(gè)技術(shù)吧.... 問(wèn)題一 如果...
    Java3y閱讀 9,597評(píng)論 5 139
  • axis全稱(chēng)Apache Extensible Interaction System 即阿帕奇可擴(kuò)展交互系統(tǒng)。Ax...
    Dews閱讀 762評(píng)論 0 2
  • 中國(guó)大地论衍,變化日新月異瑞佩。 洪洞縣剛建了新機(jī)場(chǎng),從洪洞飛寧夏坯台,機(jī)票優(yōu)惠的只有百十來(lái)塊錢(qián)炬丸。 洪武與金良是大學(xué)同學(xué),又同...
    蔣學(xué)明閱讀 907評(píng)論 23 46
  • 我和他的流年,至今整整有十年稠炬,就像Eason唱的“十年之前焕阿,我不認(rèn)識(shí)你,你不認(rèn)識(shí)我”首启,不過(guò)不像歌的傷感暮屡,我們不僅是...
    寶石花瓣閱讀 308評(píng)論 0 2