本文目录
- Java JAX-WS和JAX-RS webservice的区别和特点
- ssh+webService+jax-ws开发是什么
- JAX-WS的概述
- create Jax ws client failed
- web service JAX-WS拦截器
- jax-ws webservice 怎么获取请求头信息
- JAX-WS用什么命令从JAVA代码生成WSDL文档
- 如何设置jaxws客户端自动生成的wsdllocation
- CXF配置中 jaxws:endpoint 和 jaxrs:server的区别
Java JAX-WS和JAX-RS webservice的区别和特点
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
ssh+webService+jax-ws开发是什么
webservice是web服务,跨平台,跨语言。简单举例,你用.net实现了一个方法功能,求两个参数a和b相加的和;把这个作为一个webservice服务提供出来,然后可以用java或者其他平台去调用此服务,传两个参数a和b进去,就能得到a+b,这么说明白吗?jax-ws是一个规范,一组webservice的api,可以这么理解,webservice的一种实现,和它类似的还有axis1,axis2,xfire,cxf等,这些可以来开发webservice服务。你地,明白?
JAX-WS的概述
在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。当然 JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作。JAX-WS与JAX-RPC之间的关系Sun最开始的web services的实现是JAX-RPC 1.1 (JSR 101)。这个实现是基于Java的RPC,并不完全支持schema规范,同时没有对Binding和Parsing定义标准的实现。JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173),同时它还完全支持schema规范。
create Jax ws client failed
创建Jax ws客户端步骤:1建立一个新java项目。2新建文件夹bingo.ws.clent3打开命令行,cd到项目目录下4运行下面命令:wsimport -s ./src
web service JAX-WS拦截器
JAX-WS提供插件式框架,通过handlers去加强运行的处理能力。Handlers是一个消息拦截器,能够在你的web service前后进行处理。JAX-WS定义了两种类型的handlers,分别为logical handlers 和protocolhandlers。具体用法可以网上搜一下。另外,通常情况下 Map不需要做特殊处理,使用JAXB可以自动进行处理。
jax-ws webservice 怎么获取请求头信息
webservice采用的是jax-ws,现在要进行身份验证,我用的是设置请求头的方法,本地客户端设置请求头代码如下: Java代码 ZscpWebServiceImplService ser = new ZscpWebServiceImplService(); ZscpWebServiceImplDelegate de = ser.getZscpWebServiceImplPort(); Map《String, Object》 context = ((BindingProvider)de).getRequestContext(); Map《String, List《String》》 headers = new HashMap《String, List《String》》(); context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, “http://localhost:8080/traceWS/ZscpWebServiceImplPort?wsdl“); headers.put(“name“, Collections.singletonList(“test“)); headers.put(“checkuser“, Collections.singletonList(“test!test123“)); context.put(MessageContext.HTTP_REQUEST_HEADERS, headers); System.out.println(de.queryExposure(10, 1,“4“)); 本地服务端获取请求头代码如下: Java代码 MessageContext mc = context.getMessageContext(); Map requestHeaderNames = (Map)mc.get(SOAPMessageContext.HTTP_REQUEST_HEADERS); Set set = requestHeaderNames.keySet(); for(Object key:set){ System.out.println(key+“ “+requestHeaderNames.get(key)); } 现在我在本地运行的结果是9条信息,全部都有 Host [localhost:8080] Content-type [text/xml;charset=“utf-8“] Content-length Connection [keep-alive] Name [test] Checkuser [test!test123] User-agent [JAX-WS RI 2.1.3-hudson-390-] Accept [text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2] Soapaction [““]
JAX-WS用什么命令从JAVA代码生成WSDL文档
你好,使用java自带的wsgen命令生成wsdl文件,前提是需要开发机器上安装并配置好了java环境变量。
操作步骤如下:
在cmd下,切换到项目(wsproject)目录下,输入如下命令:D:\wsproject》wsgen -cp WebRoot/WEB-INF/classes/ -r WebRoot/WEB-INF/wsdl -s src -d WebRoot/WEB-INF/classes -wsdl name.zeal.service.MySrv
执行完毕后,会在WebRoot/WEB-INF/wsdl下生成两个文件:MySrvService.wsdl和MySrvService_schema1.xsd
如果接口客户端只能用一个wsdl文件,那就得使用内嵌模式的WSDL文件命令生成单个文件了。示例:D:\wsproject》wsgen -cp WebRoot\WEB-INF\classes\ -r WebRoot/WEB-INF/wsdl -s src -d WebRoot/WEB-INF/classes -wsdl -inlineSchemas name.zeal.service.MySrv
注意事项:如果要用到wsgen,则必须需要对Service实现的Java代码进行标注注解,否则wsgen无法识别到这是一个WebService
如何设置jaxws客户端自动生成的wsdllocation
wsdlLocation不能是相对的,必须一一对应,你可以将所有wsdl实现后,然后通过代码封装来动态调用其中的方法。因为wsdl是服务器提供的,是不允许客户端更改的。因WebServiceRef中的wsdlLocation设定的时候是在类外,还可以配置可变的,那么都可以配置出去。Properties/xml都可以。
CXF配置中 jaxws:endpoint 和 jaxrs:server的区别
endpoint是java提供的方法 jaxws是cxf提供的 访问wsdl地址设置不同 endpoint可以直接设 jaxws这要根据你的项目 及cxf.xml决定另外 endpoint不推荐用 具体的话估计是wsdl一多 地址不好规范 ,但测试很方便 随便设地址