凯里做网站的公司,网站布局f,人才市场官方网站,二次开发信怎么写简介
JAX-WS#xff08;Java API for XML-Based Web Services#xff09;#xff0c;是创建web服务的Java编程接口#xff0c;特别是SOAP服务。是Java XML编程接口之一#xff0c;是Java SE 和Java EE 平台的一部分。 JAX-WS 2.0 规范是代替JAX-RPC 1.0的下一代Web服务AP…简介
JAX-WSJava API for XML-Based Web Services是创建web服务的Java编程接口特别是SOAP服务。是Java XML编程接口之一是Java SE 和Java EE 平台的一部分。 JAX-WS 2.0 规范是代替JAX-RPC 1.0的下一代Web服务API。JAX-RPCThe Java API for XML Based RPC是基于XML的RPC远程过程调用的Java API。 JAX-WS 2.0 使用JAXBThe Java Architecture for XML Binding进行XML数据绑定所谓绑定就是指XML请求和XML响应如何映射成java对象。
参考资源
JAX-WS 2.0参考资源
https://jcp.org/en/jsr/detail?id224
https://jakarta.ee/specifications/xml-web-services/2.3/
JAX-WS 3.0参考资源
https://jakarta.ee/specifications/xml-web-services/3.0/
JAX-WS 4.0参考资源
https://jakarta.ee/specifications/xml-web-services/4.0/
Jakarta Web Services Metadata
Jakarta Web Services Metadata项目是Jakarta XML Web Services 项目的一部分它用Java为web 服务定义了一个编程模型。
代码库https://github.com/jakartaee/jws-api
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
参考实现
旧项目已经归档、只读
https://javaee.github.io/metro-jax-ws/
https://github.com/javaee/metro-jax-ws
新项目Jakarta XML Web Services Eclipse 实现
主页 https://eclipse-ee4j.github.io/metro-jax-ws/
代码库 https://github.com/eclipse-ee4j/metro-jax-ws XML web服务的Eclipse 实现是一个web服务框架它为最终用户和中间件开发者开发web服务解决方案提供了工具和基础设施infrastructure。 使用XML web服务的Eclipse 实现客户端和web有一个大的优势Java编程语言的平台无关性。
Jakarta XML Web Services Eclipse 实现需要的软件
Java SE 11或以后版本Ant 1.10.6或以后版本在GlassFish v7.x 、Apache Tomcat 10.1.x下测试过
安装Jakarta XML Web Services Eclipse 实现
下载Jakarta XML Web Services Eclipse实现独立zip发布包
打开主页https://eclipse-ee4j.github.io/metro-jax-ws/ 点击右侧的Download就可以下载独立发布包例如下载jaxws-ri-4.0.0.zip。 解压后的目录
bin子目录下的内容
docs子目录下的内容
lib子目录下的内容
samples子目录下的内容
安装到Tomcat中
设置CATALINA_HOME环境变量指向Tomcat的安装目录例如 在cmd窗口切换到Jakarta XML Web Services Eclipse实现解压后的目录例如D:\jaxws-ri-4.0.0\jaxws-ri
这个目录下有build.xml文件
运行ant install命令。这个命令其实执行了两个大的操作
拷贝Jakarta XML Web Services Eclipse实现lib子目录下的jar文件到Tomcat安装目录下面的/shared/lib子目录中更新Tomcat安装目录下面/conf/catalina.properties文件中的属性shared.loader使之等于${catalina.home}/shared/lib/*.jar
build.xml文件片段
target nameinstall dependsupdate-catalina-props descriptionInstall XML-WS RI 4.0.0 jarsecho messageInstalling XML-WS RI 4.0.0 for ${catalina.home} .../mkdir dir${catalina.lib.home}/copy toDir${catalina.lib.home} overwritetruefileset dir${basedir}/lib includes*.jar//copy/targettarget nameupdate-catalina-propsecho messageBacking up ${catalina.home}/conf/catalina.properties.../copy file${catalina.home}/conf/catalina.properties tofile${catalina.home}/conf/catalina.properties.backup/echo messageAdding XML-WS RI jars to shared.loader property in ${catalina.home}/conf/catalina.properties.../replace file${catalina.home}/conf/catalina.properties tokenshared.loader valueshared.loader$${catalina.home}/shared/lib/*.jar,/
/target执行ant install命令的窗口输出信息
Jakarta XML Web Services Eclipse 实现依赖的jar包
https://eclipse-ee4j.github.io/metro-jax-ws/4.0.0/docs/release-documentation.html#jar-dependency
SOAP1.1HTTP样例运行fromjava样例来自Jakarta XML Web Services Eclipse实现发布包
说明
fromjava这个样例演示了从一个Java service endpoint的实现开始如何构建、部署、调用一个简单的web服务。其中Java service endpoint的实现使用了Java注释。
fromjava的目录结构
服务实现类只有一个方法addNumbers输入两个整数返回一个整数抛出AddNumbersException异常
运行web服务有两种方式
在servlet容器中运行作为一个j2se webservice endpoint运行不需要servlet容器
运行方式一在tomcat容器中运行web服务
设置环境变量JAXWS_HOME指向JAX-WS的安装目录 在cmd窗口切换到fromjava的目录 运行ant clean
运行ant clean的作用是删掉${build.home}目录。其中${build.home}目录指向${basedir}/build就是fromjava/build目录。其实这个命令不运行也可以因为下一步运行ant server命令的时候其中含有ant clean的步骤
运行ant server -Dtomcattrue
运行ant server -Dtomcattrue的作用是构建、部署web服务的WAR包因为要将web服务运行在tomcat中所以加了-Dtomcattrue这个属性。这个命令做了四个工作
target nameserver dependssetupantcall targetclean/antcall targetbuild-server-java/antcall targetcreate-war/antcall targetdeploy/
/target运行输出
现在fromjava目录下的文件布局注照理${env.AS_HOME}这个目录不应该生成的对我们没有什么用
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│ └─serverAddNumbersException.javaAddNumbersImpl.javaAddWebservice.javaEndpointStopper.java到tomcat安装目录/webapps下查看war包已经拷贝过来了
运行tomcat
因为生成客户端代码的时候要访问web服务动态生成的wsdl文件所以要先启动tomcat。
到tomcat安装目录/webapps下查看war包已经被自动部署了
部署以后的文件布局
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│ └─jaxwsAddNumbers.classAddNumbers.javaAddNumbersExceptionBean.classAddNumbersExceptionBean.javaAddNumbersResponse.classAddNumbersResponse.java看看wsdl文件能否正常生成
访问http://localhost:8080/jaxws-fromjava/addnumbers?wsdl 可以看到正常生成了wsdl文件。生成客户端代码的时候就要访问这个wsdl的地址。
?xml version1.0 encodingUTF-8?!-- Published by XML-WS Runtime (https://github.com/eclipse-ee4j/metro-jax-ws). Runtimes version is XML-WS Runtime 4.0.0 git-revision#129f787. --!-- Generated by XML-WS Runtime (https://github.com/eclipse-ee4j/metro-jax-ws). Runtimes version is XML-WS Runtime 4.0.0 git-revision#129f787. --definitions xmlns:wsuhttp://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd xmlns:wsphttp://www.w3.org/ns/ws-policy xmlns:wsp1_2http://schemas.xmlsoap.org/ws/2004/09/policy xmlns:wsamhttp://www.w3.org/2007/05/addressing/metadata xmlns:soaphttp://schemas.xmlsoap.org/wsdl/soap/ xmlns:tnshttp://server.fromjava/ xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlnshttp://schemas.xmlsoap.org/wsdl/ targetNamespacehttp://server.fromjava/ nameAddNumbersImplService
types
xsd:schema
xsd:import namespacehttp://server.fromjava/ schemaLocationhttp://localhost:8080/jaxws-fromjava/addnumbers?xsd1/
/xsd:schema
/types
message nameaddNumbers
part nameparameters elementtns:addNumbers/
/message
message nameaddNumbersResponse
part nameparameters elementtns:addNumbersResponse/
/message
message nameAddNumbersException
part namefault elementtns:AddNumbersException/
/message
portType nameAddNumbersImpl
operation nameaddNumbers
input wsam:Actionhttp://server.fromjava/AddNumbersImpl/addNumbersRequest messagetns:addNumbers/
output wsam:Actionhttp://server.fromjava/AddNumbersImpl/addNumbersResponse messagetns:addNumbersResponse/
fault messagetns:AddNumbersException nameAddNumbersException wsam:Actionhttp://server.fromjava/AddNumbersImpl/addNumbers/Fault/AddNumbersException/
/operation
/portType
binding nameAddNumbersImplPortBinding typetns:AddNumbersImpl
soap:binding transporthttp://schemas.xmlsoap.org/soap/http styledocument/
operation nameaddNumbers
soap:operation soapAction/
input
soap:body useliteral/
/input
output
soap:body useliteral/
/output
fault nameAddNumbersException
soap:fault nameAddNumbersException useliteral/
/fault
/operation
/binding
service nameAddNumbersImplService
port nameAddNumbersImplPort bindingtns:AddNumbersImplPortBinding
soap:address locationhttp://localhost:8080/jaxws-fromjava/addnumbers/
/port
/service
/definitions运行ant clean
运行ant clean
运行ant client
运行ant client的目的是为了生成客户端代码并编译
target namegenerate-client dependssetupwsimportdebugtrueverbose${verbose}keeptruedestdir${build.classes.home}packagefromjava.clientwsdlhttp://localhost:8080/jaxws-fromjava/addnumbers?wsdl/wsimport
/targettarget nameclient dependsgenerate-clientjavacforktruesrcdir${basedir}/srcdestdir${build.classes.home}includes**/client/**,**/common/**classpath refidjaxws.classpath//javac
/target运行后客户端代码布局
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
执行ant run表示运行客户端。
target namerunjava forktrue classnamefromjava.client.AddNumbersClientclasspathpath refidjaxws.classpath/pathelement location${build.classes.home}/pathelement location${basedir}/etc//classpath/java
/target运行方式二作为一个j2se webservice endpoint运行不运行在servlet容器中
运行ant clean server-j2se
运行ant clean server-j2se生成服务端代码并且用Endpoint API来部署
target nameserver-j2se dependssetupantcall targetclean/antcall targetbuild-server-java/echo messageStarting endpoint... To stop: ant server-j2se-stop /java forktrue classnamefromjava.server.AddWebserviceclasspathpath refidjaxws.classpath/pathelement location${build.classes.home}//classpath/java
/target生成的文件布局
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文件 运行ant clean client run
另外打开一个cmd窗口运行ant clean client run目的是在根据endpoint发布的wsdl文件生成客户端代码、编译、并且运行。
运行后客户端的代码布局 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服务
target nameserver-j2se-stop dependssetupget srchttp://localhost:9090/stop deststop.status/
/targetJakarta XML Web Services Eclipse实现下载方式二用maven下载
在maven工程的pom.xml文件中增加如下依赖 dependenciesdependencygroupIdjakarta.xml.ws/groupIdartifactIdjakarta.xml.ws-api/artifactIdversion4.0.0/version/dependencydependencygroupIdcom.sun.xml.ws/groupIdartifactIdjaxws-rt/artifactIdversion4.0.0/version /dependency/dependencies