当前位置: 首页 > 面试题库 >

Java:JAX-WS映射

邓赤岩
2023-03-14
问题内容

我正在将JAX-WS用于Web服务。

每当我将char用作方法参数时,我都会在xsd中将其作为unsignedShort来获取(着重于weatherLetter)。

这是声明

@WebMethod
public boolean setWXtatus(
        @WebParam(name = "weatherLetter") char weatherLetter,
        @WebParam(name = "weatherDigit") int weatherDigit,
        @WebParam(name = "cloudCover") int cloudCover,
        @WebParam(name = "cloudBaseInHundredsOfFeet") int cloudBaseInHundredsOfFeet,
        @WebParam(name = "pressureInHg") int pressureInHg,
        @WebParam(name = "visibilityInKm") int visibilityInKm,
        @WebParam(name = "windSpeed") int windSpeed,
        @WebParam(name = "windDirection") int windDirection,
        @WebParam(name = "lastUpdateHour") int lastUpdateHour,
        @WebParam(name = "lastUpdateMin") int lastUpdateMin
)

这是我得到的类型映射:

<xs:complexType name="setWXStatus">
<xs:sequence>
<xs:element name="weatherLetter" type="xs:unsignedShort" minOccurs="0"/>
<xs:element name="weatherDigit" type="xs:int"/>
<xs:element name="cloudCover" type="xs:int"/>
<xs:element name="cloudBaseInHundredsOfFeet" type="xs:int"/>
<xs:element name="pressureInHg" type="xs:int"/>
<xs:element name="visibilityInKm" type="xs:int"/>
<xs:element name="windSpeed" type="xs:int"/>
<xs:element name="windDirection" type="xs:int"/>
<xs:element name="lastUpdateHour" type="xs:int"/>
<xs:element name="lastUpdateMin" type="xs:int"/>
</xs:sequence>
</xs:complexType>

我怎样才能将weatherLetter生成为Char或1个字母字符串等?


问题答案:

更新:

一种实现方法是在XSD中(如果您 先签约
),例如直接向其添加XSD限制,例如

<xs:element name="singleChar">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="1"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

但是我认为问题是 合同最后 的问题(例如,编写生成XSD的代码,反之亦然)

据我所知,JAX-WS或JAXB尚不支持此功能(但有一个不错的增强要求)

资料来源:

JAX-WS和JAXB不支持针对XSD限制的代码生成(例如xsd:restriction) http://old.nabble.com/Does-
jaxb-2.1-enforce-xs:restriction-td21348458.html

原因是也不支持其他方向(通过注释生成限制)

解决方法:

看一下这个:http
:
//download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html

还有这个问题:

JAX-WS和Joda-Time?

不是完全按照自己的意愿去做,而是让您离自己更近一点

我认为您不能通过其他任何方式将其限制为1个字符,一个字符确实是一个无符号的short,并且您可以将其限制为1个“字符串”字符。

如果使用字符串,则将允许无限字符。和@WebParam没有一个API来限制长度

实际上,我完全没有看到使用JAX-WS进行XSD限制的方法,但是我可能错了



 类似资料:
  • 这是日志: 谢谢

  • ws-http 是一个简单轻量的HTTP 客户端工具库。可用于 HTTP API 测试,支持 ssl,basic auth,代理,自定义请求头,以及常用HTTP 请求方法。 $httpRequest = \Ws\Http\Request::create();$httpResponse = $httpRequest->get("https://api.github.com");$watcher = 

  • 实现基于Websocket 协议的 PHP类库 和 javascript类库 , 实现事件+回调函数的架构开发,以一个简单聊天室实例介绍其使用方法: 不同浏览器,不同电脑,不同地域, 实时通讯。实现的详细 请研究源码。 /***服务端****/ /**  * 实例化  */ $io = new SocketIO('127.0.0.1',8000); /**  * 监听连接  */ $io->on(

  • Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client. Use Server-sent events (SSE) instead? Check out graphql-sse! Getting started Install yarn add grap

  • WS-Policy 定义了一个简单 XML 结构,由 4 个不同元素和一对属性组成。根据 WS-Policy 解释,这些元素和属性提供一种方法来组织和合并任意复杂度的策略断言(policy assertions)。为了定义构成策略的真实断言,您需要使用特定扩展,比如 WS-SecurityPolicy,而不是 WS-Policy 本身。 为了方便起见,WS-Policy 定义了一个标准形式的策略表

  • JAX-WS (JavaTM API for XML-Based Web Services)规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。 在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要