国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn)

這篇具有很好參考價值的文章主要介紹了基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡介

JAX-WS(Java API for XML-Based Web Services),是創(chuàng)建web服務(wù)的Java編程接口,特別是SOAP服務(wù)。是Java XML編程接口之一,是Java SE 和Java EE 平臺的一部分。
JAX-WS 2.0 規(guī)范是代替JAX-RPC 1.0的下一代Web服務(wù)API。JAX-RPC(The Java API for XML Based RPC)是基于XML的RPC(遠(yuǎn)程過程調(diào)用)的Java API。
JAX-WS 2.0 使用JAXB(The Java Architecture for XML Binding)進(jìn)行XML數(shù)據(jù)綁定,所謂綁定就是指XML請求和XML響應(yīng)如何映射成java對象。

參考資源

JAX-WS 2.0參考資源

https://jcp.org/en/jsr/detail?id=224
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

https://jakarta.ee/specifications/xml-web-services/2.3/
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

JAX-WS 3.0參考資源

https://jakarta.ee/specifications/xml-web-services/3.0/
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

JAX-WS 4.0參考資源

https://jakarta.ee/specifications/xml-web-services/4.0/
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

Jakarta Web Services Metadata

Jakarta Web Services Metadata項目是Jakarta XML Web Services 項目的一部分,它用Java為web 服務(wù)定義了一個編程模型。

代碼庫:https://github.com/jakartaee/jws-api
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

Jakarta Web Services Metadata 3.0 Specification Document (HTML):
https://jakarta.ee/specifications/web-services-metadata/3.0/ws-metadata-spec-3.0

Jakarta Web Services Metadata 3.0 Javadoc:
https://jakarta.ee/specifications/web-services-metadata/3.0/apidocs/jakarta.jws/module-summary.html

參考實現(xiàn)

舊項目(已經(jīng)歸檔、只讀)

https://javaee.github.io/metro-jax-ws/
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

https://github.com/javaee/metro-jax-ws
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

新項目(Jakarta XML Web Services Eclipse 實現(xiàn))

主頁:
https://eclipse-ee4j.github.io/metro-jax-ws/
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

代碼庫:
https://github.com/eclipse-ee4j/metro-jax-ws
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
XML web服務(wù)的Eclipse 實現(xiàn)是一個web服務(wù)框架,它為最終用戶和中間件開發(fā)者開發(fā)web服務(wù)解決方案提供了工具和基礎(chǔ)設(shè)施(infrastructure)。
使用XML web服務(wù)的Eclipse 實現(xiàn),客戶端和web有一個大的優(yōu)勢:Java編程語言的平臺無關(guān)性。

Jakarta XML Web Services Eclipse 實現(xiàn)需要的軟件

JRE版本

Java SE 11或以后版本

Ant 版本

Ant 1.10.6或以后版本

servlet容器

在GlassFish v7.x 、Apache Tomcat 10.1.x下測試過

安裝Jakarta XML Web Services Eclipse 實現(xiàn)

下載Jakarta XML Web Services Eclipse實現(xiàn)獨立zip發(fā)布包

打開主頁:https://eclipse-ee4j.github.io/metro-jax-ws/
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
點擊右側(cè)的Download就可以下載獨立發(fā)布包,例如,下載jaxws-ri-4.0.0.zip。
解壓后的目錄:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

bin子目錄下的內(nèi)容:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

docs子目錄下的內(nèi)容:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

lib子目錄下的內(nèi)容:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

samples子目錄下的內(nèi)容:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

安裝到Tomcat中

設(shè)置CATALINA_HOME環(huán)境變量,指向Tomcat的安裝目錄,例如:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
在cmd窗口,切換到Jakarta XML Web Services Eclipse實現(xiàn)解壓后的目錄,例如:D:\jaxws-ri-4.0.0\jaxws-ri
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

這個目錄下有build.xml文件:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行ant install命令。這個命令其實執(zhí)行了兩個大的操作:

  • 拷貝Jakarta XML Web Services Eclipse實現(xiàn)lib子目錄下的jar文件到Tomcat安裝目錄下面的/shared/lib子目錄中
  • 更新Tomcat安裝目錄下面/conf/catalina.properties文件中的屬性shared.loader,使之等于${catalina.home}/shared/lib/*.jar

build.xml文件片段:

<target name="install" depends="update-catalina-props" description="Install XML-WS RI 4.0.0 jars">
    <echo message="Installing XML-WS RI 4.0.0 for ${catalina.home} ..."/>

    <mkdir dir="${catalina.lib.home}"/>
    <copy toDir="${catalina.lib.home}" overwrite="true">
        <fileset dir="${basedir}/lib" includes="*.jar"/>
    </copy>

</target>

<target name="update-catalina-props">
    <echo message="Backing up ${catalina.home}/conf/catalina.properties..."/>
    <copy file="${catalina.home}/conf/catalina.properties" tofile="${catalina.home}/conf/catalina.properties.backup"/>
    <echo message="Adding XML-WS RI jars to shared.loader property in ${catalina.home}/conf/catalina.properties..."/>
    <replace file="${catalina.home}/conf/catalina.properties" token="shared.loader=" value="shared.loader=$${catalina.home}/shared/lib/*.jar,"/>
</target>

執(zhí)行ant install命令的窗口輸出信息:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

Jakarta XML Web Services Eclipse 實現(xiàn)依賴的jar包

https://eclipse-ee4j.github.io/metro-jax-ws/4.0.0/docs/release-documentation.html#jar-dependency
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

SOAP1.1+HTTP樣例:運行fromjava樣例(來自Jakarta XML Web Services Eclipse實現(xiàn)發(fā)布包)

說明

fromjava這個樣例演示了從一個Java service endpoint的實現(xiàn)開始,如何構(gòu)建、部署、調(diào)用一個簡單的web服務(wù)。其中Java service endpoint的實現(xiàn)使用了Java注釋。
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

fromjava的目錄結(jié)構(gòu):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

服務(wù)實現(xiàn)類只有一個方法addNumbers,輸入兩個整數(shù),返回一個整數(shù),拋出AddNumbersException異常:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行web服務(wù)有兩種方式:

  • 在servlet容器中運行
  • 作為一個j2se webservice endpoint運行(不需要servlet容器)

運行方式一:在tomcat容器中運行web服務(wù)

設(shè)置環(huán)境變量JAXWS_HOME指向JAX-WS的安裝目錄

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

在cmd窗口切換到fromjava的目錄

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行ant clean

運行ant clean的作用是刪掉${build.home}目錄。其中${build.home}目錄指向${basedir}/build,就是fromjava/build目錄。(其實這個命令不運行也可以,因為下一步運行ant server命令的時候其中含有ant clean的步驟)
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行ant server -Dtomcat=true

運行ant server -Dtomcat=true的作用是構(gòu)建、部署web服務(wù)的WAR包,因為要將web服務(wù)運行在tomcat中,所以加了-Dtomcat=true這個屬性。這個命令做了四個工作:

<target name="server" depends="setup">

    <antcall target="clean"/>

    <antcall target="build-server-java"/>

    <antcall target="create-war"/>

    <antcall target="deploy"/>
</target>

運行輸出:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

現(xiàn)在fromjava目錄下的文件布局(注:照理${env.AS_HOME}這個目錄不應(yīng)該生成的,對我們沒有什么用):

D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\FROMJAVA
│  build.xml
│  Readme.txt
│  
├─${env.AS_HOME}
│  └─domains
│      └─domain1
│          └─autodeploy
│                  jaxws-fromjava.war
│                  
├─build
│  ├─classes
│  │  └─fromjava
│  │      └─server
│  │          │  AddNumbersException.class
│  │          │  AddNumbersImpl.class
│  │          │  AddWebservice.class
│  │          │  EndpointStopper$1.class
│  │          │  EndpointStopper.class
│  │          │  
│  │          └─jaxws
│  │                  AddNumbers.class
│  │                  AddNumbers.java
│  │                  AddNumbersExceptionBean.class
│  │                  AddNumbersExceptionBean.java
│  │                  AddNumbersResponse.class
│  │                  AddNumbersResponse.java
│  │                  
│  └─war
│          jaxws-fromjava.war
│          
├─etc
│      deploy-targets.xml
│      sun-jaxws.xml
│      web.xml
│      
└─src
    └─fromjava
        ├─client
        │      AddNumbersClient.java
        │      
        └─server
                AddNumbersException.java
                AddNumbersImpl.java
                AddWebservice.java
                EndpointStopper.java

<tomcat安裝目錄>/webapps下查看,war包已經(jīng)拷貝過來了:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行tomcat

因為生成客戶端代碼的時候要訪問web服務(wù)動態(tài)生成的wsdl文件,所以要先啟動tomcat。
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

<tomcat安裝目錄>/webapps下查看,war包已經(jīng)被自動部署了:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

部署以后的文件布局:

D:\APACHE-TOMCAT-10.1.13\WEBAPPS\JAXWS-FROMJAVA
├─META-INF
│      MANIFEST.MF
│      war-tracker
│      
└─WEB-INF
    │  sun-jaxws.xml
    │  web.xml
    │  
    └─classes
        └─fromjava
            └─server
                │  AddNumbersException.class
                │  AddNumbersImpl.class
                │  AddWebservice.class
                │  EndpointStopper$1.class
                │  EndpointStopper.class
                │  
                └─jaxws
                        AddNumbers.class
                        AddNumbers.java
                        AddNumbersExceptionBean.class
                        AddNumbersExceptionBean.java
                        AddNumbersResponse.class
                        AddNumbersResponse.java

看看wsdl文件能否正常生成

訪問http://localhost:8080/jaxws-fromjava/addnumbers?wsdl
可以看到,正常生成了wsdl文件。生成客戶端代碼的時候,就要訪問這個wsdl的地址。
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

<?xml version='1.0' encoding='UTF-8'?><!-- Published by XML-WS Runtime (https://github.com/eclipse-ee4j/metro-jax-ws). Runtime's version is XML-WS Runtime 4.0.0 git-revision#129f787. --><!-- Generated by XML-WS Runtime (https://github.com/eclipse-ee4j/metro-jax-ws). Runtime's version is XML-WS Runtime 4.0.0 git-revision#129f787. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://server.fromjava/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://server.fromjava/" name="AddNumbersImplService">
<types>
<xsd:schema>
<xsd:import namespace="http://server.fromjava/" schemaLocation="http://localhost:8080/jaxws-fromjava/addnumbers?xsd=1"/>
</xsd:schema>
</types>
<message name="addNumbers">
<part name="parameters" element="tns:addNumbers"/>
</message>
<message name="addNumbersResponse">
<part name="parameters" element="tns:addNumbersResponse"/>
</message>
<message name="AddNumbersException">
<part name="fault" element="tns:AddNumbersException"/>
</message>
<portType name="AddNumbersImpl">
<operation name="addNumbers">
<input wsam:Action="http://server.fromjava/AddNumbersImpl/addNumbersRequest" message="tns:addNumbers"/>
<output wsam:Action="http://server.fromjava/AddNumbersImpl/addNumbersResponse" message="tns:addNumbersResponse"/>
<fault message="tns:AddNumbersException" name="AddNumbersException" wsam:Action="http://server.fromjava/AddNumbersImpl/addNumbers/Fault/AddNumbersException"/>
</operation>
</portType>
<binding name="AddNumbersImplPortBinding" type="tns:AddNumbersImpl">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="addNumbers">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="AddNumbersException">
<soap:fault name="AddNumbersException" use="literal"/>
</fault>
</operation>
</binding>
<service name="AddNumbersImplService">
<port name="AddNumbersImplPort" binding="tns:AddNumbersImplPortBinding">
<soap:address location="http://localhost:8080/jaxws-fromjava/addnumbers"/>
</port>
</service>
</definitions>

運行ant clean

運行ant clean:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行ant client

運行ant client的目的是為了生成客戶端代碼并編譯:

<target name="generate-client" depends="setup">
    <wsimport
            debug="true"
            verbose="${verbose}"
            keep="true"
            destdir="${build.classes.home}"
            package="fromjava.client"
            wsdl="http://localhost:8080/jaxws-fromjava/addnumbers?wsdl">
    </wsimport>
</target>

<target name="client" depends="generate-client">
    <javac
            fork="true"
            srcdir="${basedir}/src"
            destdir="${build.classes.home}"
            includes="**/client/**,**/common/**">
        <classpath refid="jaxws.classpath"/>
    </javac>
</target>

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行后,客戶端代碼布局:

D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\FROMJAVA\BUILD
├─classes
│  └─fromjava
│      └─client
│              AddNumbers.class
│              AddNumbers.java
│              AddNumbersClient.class
│              AddNumbersException.class
│              AddNumbersException.java
│              AddNumbersException_Exception.class
│              AddNumbersException_Exception.java
│              AddNumbersImpl.class
│              AddNumbersImpl.java
│              AddNumbersImplService.class
│              AddNumbersImplService.java
│              AddNumbersResponse.class
│              AddNumbersResponse.java
│              ObjectFactory.class
│              ObjectFactory.java
│              package-info.class
│              package-info.java
│              
└─war

運行ant run

執(zhí)行ant run表示運行客戶端。

<target name="run">
    <java fork="true" classname="fromjava.client.AddNumbersClient">
        <classpath>
            <path refid="jaxws.classpath"/>
            <pathelement location="${build.classes.home}"/>
            <pathelement location="${basedir}/etc"/>
        </classpath>
    </java>
</target>

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

在運行ant run前,啟動Wireshark抓包工具,在環(huán)回接口上抓包,目的是看看調(diào)用web服務(wù)的協(xié)議是否用了SOAP協(xié)議(用http過濾):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

計算10+20的請求:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
計算10+20的響應(yīng):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

計算-10+20的請求:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

計算-10+20的響應(yīng):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行方式二:作為一個j2se webservice endpoint運行(不運行在servlet容器中)

運行ant clean server-j2se

運行ant clean server-j2se生成服務(wù)端代碼,并且用Endpoint API來部署:

<target name="server-j2se" depends="setup">
    <antcall target="clean"/>

    <antcall target="build-server-java"/>

    <echo message="Starting endpoint... To stop: ant server-j2se-stop "/>

    <java fork="true" classname="fromjava.server.AddWebservice">
        <classpath>
            <path refid="jaxws.classpath"/>
            <pathelement location="${build.classes.home}"/>
        </classpath>
    </java>
</target>

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

生成的文件布局:

D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\FROMJAVA\BUILD
├─classes
│  └─fromjava
│      └─server
│          │  AddNumbersException.class
│          │  AddNumbersImpl.class
│          │  AddWebservice.class
│          │  EndpointStopper$1.class
│          │  EndpointStopper.class
│          │  
│          └─jaxws
│                  AddNumbers.class
│                  AddNumbers.java
│                  AddNumbersExceptionBean.class
│                  AddNumbersExceptionBean.java
│                  AddNumbersResponse.class
│                  AddNumbersResponse.java
│                  
└─war

訪問http://localhost:8080/jaxws-fromjava/addnumbers?wsdl
可以正常生成wsdl文件:

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行ant clean client run

另外打開一個cmd窗口,運行ant clean client run,目的是在根據(jù)endpoint發(fā)布的wsdl文件生成客戶端代碼、編譯、并且運行。
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行后,客戶端的代碼布局:
D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\FROMJAVA\BUILD
├─classes
│ └─fromjava
│ └─client
│ AddNumbers.class
│ AddNumbers.java
│ AddNumbersClient.class
│ AddNumbersException.class
│ AddNumbersException.java
│ AddNumbersException_Exception.class
│ AddNumbersException_Exception.java
│ AddNumbersImpl.class
│ AddNumbersImpl.java
│ AddNumbersImplService.class
│ AddNumbersImplService.java
│ AddNumbersResponse.class
│ AddNumbersResponse.java
│ ObjectFactory.class
│ ObjectFactory.java
│ package-info.class
│ package-info.java

└─war

運行ant server-j2se-stop,停止web服務(wù)

<target name="server-j2se-stop" depends="setup">
    <get src="http://localhost:9090/stop" dest="stop.status"/>
</target>

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

REST風(fēng)格的web服務(wù)樣例(使用XML/HTTP綁定 )

說明

本樣例來自Jakarta XML Web Services Eclipse實現(xiàn)發(fā)布包中的restful樣例:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
這個樣例展示了基于REST風(fēng)格的web服務(wù),利用XML/HTTP綁定。在這種情況下,不需要發(fā)布wsdl文件。

服務(wù)端實現(xiàn)了一個web服務(wù)的Provider:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

客戶端訪問web服務(wù),樣例演示了兩種訪問方式:

  • 方式一:使用Jakarta XML Web Services Dispatch,利用HTTP GET請求方法,以及Jakarta XML Web Services MessageContext 的屬性 PATH_INFO 和 QUERY_STRING。

  • 方式二:使用URLConnection。

  • 另外,也可以直接在瀏覽器中訪問,就作為方式三吧。

restful樣例的目錄結(jié)構(gòu):

D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\RESTFUL
│  build.xml
│  Readme.txt
│  
├─etc
│      deploy-targets.xml
│      sun-jaxws.xml
│      web.xml
│      
└─src
    └─restful
        ├─client
        │      AddNumbersClient.java
        │      DispatchAddNumbersClient.java
        │      
        └─server
                AddNumbersImpl.java

web服務(wù)需要兩個輸入?yún)?shù),然后求和,將計算結(jié)果返回。

運行服務(wù)端

設(shè)置環(huán)境變量JAXWS_HOME,指向JAX-WS的安裝目錄

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

在cmd窗口切換到restful的目錄

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行ant clean server -Dtomcat=true

運行ant clean server -Dtomcat=true,其中tomcat=true這個系統(tǒng)屬性表示將服務(wù)端的web服務(wù)部署到tomcat上。
運行輸出信息:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
現(xiàn)在restful目錄下的文件布局:

D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\RESTFUL
│  build.xml
│  Readme.txt
│  
├─build
│  ├─classes
│  │  └─restful
│  │      └─server
│  │              AddNumbersImpl.class
│  │              
│  └─war
│          jaxws-restful.war
│          
├─etc
│      deploy-targets.xml
│      sun-jaxws.xml
│      web.xml
│      
└─src
    └─restful
        ├─client
        │      AddNumbersClient.java
        │      DispatchAddNumbersClient.java
        │      
        └─server
                AddNumbersImpl.java

到<tomcat安裝目錄>/webapps下查看,war包已經(jīng)拷貝過來了:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

運行tomcat

基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

到<tomcat安裝目錄>/webapps下查看,war包已經(jīng)被自動部署了:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

部署以后的文件布局:

D:\APACHE-TOMCAT-10.1.13\WEBAPPS\JAXWS-RESTFUL
├─META-INF
│      MANIFEST.MF
│      war-tracker
│      
└─WEB-INF
    │  sun-jaxws.xml
    │  web.xml
    │  
    └─classes
        └─restful
            └─server
                    AddNumbersImpl.class

(客戶端訪問web服務(wù)方式三)直接在瀏覽器中訪問web服務(wù)、抓包分析

直接在瀏覽器中訪問,服務(wù)已經(jīng)正常啟動:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

用Wireshark在本地環(huán)回接口上開啟抓http的包,在瀏覽器中重新訪問。
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

響應(yīng)報文是HTTP/XML形式的:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

(客戶端訪問web服務(wù)方式一)在cmd窗口基于Dispatch方式運行客戶端

運行ant clean client run-dispatch:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

客戶端運行以后的輸出目錄布局:

D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\RESTFUL\BUILD
├─classes
│  └─restful
│      └─client
│              AddNumbersClient.class
│              DispatchAddNumbersClient.class
│              
└─war

運行客戶端的時候,同步用Wireshark在本地環(huán)回接口抓到的http的包:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

請求參數(shù)放在URL的查詢部分::
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
響應(yīng):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

請求參數(shù)放在URL的路徑部分::
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
響應(yīng):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

(客戶端訪問web服務(wù)方式二)在cmd窗口使用URLConnection方式訪問web服務(wù)

運行ant clean client run-url:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

客戶端運行以后的輸出目錄布局:

D:\JAXWS-RI-4.0.0\JAXWS-RI\SAMPLES\RESTFUL\BUILD
├─classes
│  └─restful
│      └─client
│              AddNumbersClient.class
│              DispatchAddNumbersClient.class
│              
└─war

用WireShark在本地環(huán)回接口上同步抓到的包:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

請求參數(shù)放在URL的查詢部分:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
響應(yīng):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

請求參數(shù)放在URL的路徑中:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
響應(yīng):
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java

Jakarta XML Web Services Eclipse實現(xiàn)下載方式二:用maven下載

這種方式不需要安裝Jakarta XML Web Services Eclipse實現(xiàn)單獨的發(fā)布包。

創(chuàng)建一個maven工程,在maven工程的pom.xml文件中增加如下依賴:

  <dependencies>
    <dependency>
      <groupId>jakarta.xml.ws</groupId>
      <artifactId>jakarta.xml.ws-api</artifactId>
      <version>4.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.ws</groupId>
      <artifactId>jaxws-rt</artifactId>
      <version>4.0.0</version>        
    </dependency>
  </dependencies>

因為將web服務(wù)部署servlet容器(例如tomcat)的時候,依賴的包是放在一個目錄下面的。所以,要部署的時候,可以先使用maven的dependency插件,將項目依賴從maven倉庫中提取出來,拷貝到一個指定的位置(如果使用ant構(gòu)建的話,方便ant的build文件編寫)。

例如,在cmd窗口,切換到maven工程的根目錄下面,運行mvn dependency:copy-dependencies -Dmdep.stripVersion=true -DoutputDirectory=lib,指定將依賴包拷貝到項目根目錄下面的lib子目錄下,拷貝時去掉了依賴包文件名中的版本號:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java
<項目根目錄>/lib子目錄下查看,內(nèi)容拷貝過來了:
基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn),java文章來源地址http://www.zghlxwxcb.cn/news/detail-714796.html

到了這里,關(guān)于基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java調(diào)用參數(shù)為xml格式的接口,分析轉(zhuǎn)換返回結(jié)果

    Java調(diào)用參數(shù)為xml格式的接口,分析轉(zhuǎn)換返回結(jié)果

    最近第一次接觸到xml格式的接口,以下是自己編寫的經(jīng)驗,鐵汁們可以參考自己的項目自行修改。 完整代碼已附在文章末尾,如有缺陷,歡迎評論區(qū)或私信交流。 首先向接口提供方申請了接口文檔,包含了接口地址和參數(shù)信息,先使用postman工具調(diào)用接口,分析參數(shù)和返回值

    2024年02月10日
    瀏覽(25)
  • Java基于Andriod平臺的手機(jī)Web地圖服務(wù)設(shè)計(源碼+mysql+文檔)

    Java基于Andriod平臺的手機(jī)Web地圖服務(wù)設(shè)計(源碼+mysql+文檔)

    本系統(tǒng)(程序+源碼)帶文檔lw萬字以上??文末可領(lǐng)取本課題的JAVA源碼參考 選題背景: 隨著移動互聯(lián)網(wǎng)的快速發(fā)展,智能手機(jī)已經(jīng)成為人們生活中不可或缺的一部分。而地圖服務(wù)作為智能手機(jī)的重要功能之一,為用戶提供了方便快捷的定位、導(dǎo)航和搜索服務(wù)。然而,傳統(tǒng)的桌

    2024年01月25日
    瀏覽(25)
  • Java調(diào)用WebService接口,SOAP協(xié)議HTTP請求返回XML對象

    Java調(diào)用Web service接口SOAP協(xié)議HTTP請求,解析返回的XML字符串: 1. 使用Java的HTTP庫發(fā)送SOAP請求,并接收返回的響應(yīng)。 可以使用Java的HttpURLConnection、Apache HttpClient等庫。 2. 將返回的響應(yīng)轉(zhuǎn)換為字符串。 3. 解析XML字符串 ,可以使用Java的DOM解析器或者其他第三方庫,如JDOM、DOM4J等。

    2024年01月19日
    瀏覽(28)
  • java: 無法訪問jakarta.servlet.ServletContext 找不到j(luò)akarta.servlet.ServletContext的類文件

    今天在學(xué)習(xí)springmvc的時候發(fā)現(xiàn)了一個關(guān)系沖突的問題,首先我不是大神,我只是一個初學(xué)者。 問題是由javax和jakerta引出來的。我的tomcat版本是9,jdk是17,spring是6.0.11,然后tomcat9使用的應(yīng)該還是javax,但是在使用spring自己封裝好的WebApplicaitonUtils的 ?getWebApplicationContext方法去優(yōu)

    2024年02月04日
    瀏覽(24)
  • java: 無法訪問jakarta.servlet.ServletException 找不到j(luò)akarta.servlet.ServletException的類文件

    tomcat插件用不了?tomcat配置用不了?jdk太高了? 就在pom加個這個試試吧 因為黑馬程序員ssm用的是jdk8,tomcat插件 但是我用jdk18,所以就用配置本地的那個,其他用最新的依賴

    2024年02月12日
    瀏覽(23)
  • java web中部署log4j.xml

    標(biāo)題:Java Web中部署log4j.xml 目錄: 1. 介紹 2. 配置log4j.xml文件 3. 配置web.xml文件 4. 配置Spring框架 5. 配置Spring Bean 6. 總結(jié) ## 1. 介紹 在Java Web開發(fā)中,日志記錄是非常重要的一部分。log4j是一個常用的Java日志記錄框架,它提供了靈活的配置和強(qiáng)大的日志功能。本篇博客將介紹如何

    2024年02月09日
    瀏覽(26)
  • 解決maven編譯錯誤:程序包com.sun.xml.internal.ws.spi不存在

    解決方法如下: 添加maven-compiler-plugin插件,并且配置compilerArguments 如: 注意: 1:這里的rt.jar需要配置正確的路徑 2:如果使用的類,接口等在其他的jar里面(如tools.jar),則bootclasspath值需要配置成其他的jar 配置好之后,再編譯打包,就沒有問題了

    2024年02月21日
    瀏覽(20)
  • java: 無法訪問jakarta.servlet.ServletException

    使用SpringMvc時出現(xiàn)報錯報錯 java: 無法訪問jakarta.servlet.ServletException ? 找不到j(luò)akarta.servlet.ServletException的類文件 在 Java EE 8 中,一些標(biāo)準(zhǔn)的 Java EE 包已經(jīng)從? javax ?包遷移到了? jakarta ?包,其中包括? javax.servlet ?包 。這個問題通常是由于 使用的依賴版本過低所導(dǎo)致的 。因此,

    2024年04月23日
    瀏覽(68)
  • java.lang.NoClassDefFoundError: jakarta/json/JsonException

    java.lang.NoClassDefFoundError: jakarta/json/JsonException

    java.lang.NoClassDefFoundError: jakarta/json/JsonException 整合Elasticsearch是提示錯誤java.lang.NoClassDefFoundError: jakarta/json/JsonException 找不到包 添加依賴 在導(dǎo)入依賴后,依然發(fā)現(xiàn)報錯,查看源碼可以發(fā)現(xiàn),包名對不上。 此時給jakarta.json-api設(shè)置版本 再次執(zhí)行就沒有問題了。

    2024年02月11日
    瀏覽(18)
  • nginx部署時http接口正常,ws接口404

    nginx部署時http接口正常,ws接口404

    可以這么配置 首先: 表示的是: 如果 $http_upgrade 不為 ‘’ (空),則 $connection_upgrade 為 upgrade 。 如果 $http_upgrade 為 ‘’ (空),則 $connection_upgrade 為 close。 其次: 表示的是 nginx負(fù)載均衡: 兩臺服務(wù)器 (ip1:port1)和(ip2:port2) 。 keepalive 1000 表示的是每個nginx進(jìn)程中上游服務(wù)器保持

    2024年02月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包