- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在研究 WSDL 和 JAX-WS,这就是我遇到这个问题的地方。当我在 JAX-WS 中编写服务接口(interface)时,如下所示:
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld {
@WebMethod
@WebResult(name="helloworldstring")
String getHelloWorldAsString(**@WebParam(name="myname")** String name);
}
生成的 WSDL 具有如下声明的请求的消息
:
<message name="getHelloWorldAsString">
<part **name="myname"** type="xsd:string"></part>
</message>
当我从 wsimport
实用程序生成客户端 stub 时,生成的服务类将 name
和 partName
作为“myname”。
如果我在我的服务中根本没有指定 @WebParam
,则 WSDL 的部分名称为 arg0
,而服务 stub 是使用 wsimport
生成的在其 @webParam
声明中获取 name
和 partName
作为 arg0
。
如果我在我的服务类的@WebParam
中同时指定了name
和partName
,如下所示:
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld {
@WebMethod
@WebResult(name="helloworldstring")
String getHelloWorldAsString(**@WebParam(name="myname", partName="mypartname")** String name);
}
生成的 WSDL 的部件名称为 mypartname
。此外,使用 wsimport
生成的服务 stub 为 @WebParam
的 name
和 partName
获取 mypartname
> 声明,完全忽略在我的网络服务中声明的 name="myname"
。
所以我不明白@WebParam
这两个属性的意义。如果我在这两个属性中指定不同的值,应该在 WSDL 中反射(reflect)什么。
This link描述如下:
name
:指定参数的名称,因为它出现在生成的 WSDL 文档中。对于 RPC 绑定(bind),这是表示参数的 wsdl:part 的名称。对于文档绑定(bind),这是表示参数的 XML 元素的本地名称。根据 JAX-WS 规范,默认值为 argN,其中 N 替换为从零开始的参数索引(即 arg0、arg1 等)。partName
:为参数指定 wsdl:part 元素的名称属性的值。此属性用于文档样式 SOAP 绑定(bind)。但我仍然没有从中得到太多的理解。我想知道如果我指定不同的 name
和 partName
会有什么不同。
注意:所有这些都是使用 RPC 样式的 SOAP 绑定(bind)而不是文档样式来完成的。
最佳答案
让我们看看规范是怎么说的(JSR-000224 Java API for XML-Based Web Services 2.2 Rev a 3.6.1):
The
javax.jws.WebParam
annotation (see 7.11.4) MAY be used to specify thename
of thewsdl:part
or XML Schema element declaration corresponding to a Java parameter. If both thename
andpartName
elements are used in thejavax.jws.WebParam
annotation then thepartName
MUST be used for thewsdl:part
name attribute and thename
element from the annotation will be ignored.
因此,根据规范,您观察到的行为是正确的。在文档样式的情况下,两个不同的属性是有意义的,因为您在 <wsdl:types>
中同时拥有零件名称和元素名称。 .我想知道是否可以使用 element
part
的属性在 RPC 服务中,像这样:
<wsdl:part name="myname" element="tns:mynameelement" />
简短测试显示 wsimport 失败并出现错误:
Invalid wsdl:operation "getHelloWorldAsString": its a rpc-literal operation, message part must refer to a schema type declaration
WSDL 规范并没有禁止,但是WS-I Basic Profile做:
A wsdl:message in a DESCRIPTION MAY contain wsdl:parts that use the elements attribute provided those wsdl:parts are not referred to by a soapbind:body in an rpc-literal binding.
结论:指定不同的name
没有任何区别和 partName
.这两个字段在那里是因为相同的注释用于文档绑定(bind)样式,它们更有意义。
关于JAX-WS 和 WSDL 中的 javax.jws.WebParam.name 与 javax.jws.WebParam.partName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19606687/
我阅读了可以找到的 JSON Web 签名规范 here .该规范为 JSON Web 签名定义了两种序列化表示。一种是 JWS Compact Serialization,另一种是 JWS JSON
我正在研究 WSDL 和 JAX-WS,这就是我遇到这个问题的地方。当我在 JAX-WS 中编写服务接口(interface)时,如下所示: @WebService @SOAPBinding(styl
我正在尝试使用 Certbot 为我的 IIS 服务器获取证书。但我不断收到此错误: [31mAn unexpected error occurred:[0m [31mThe JWS was sign
我有一个很大的 Java applet(大约 7 MB)。这是一个古老而庞大的项目,由几个 (7) 个较小的项目组成,所有项目都使用“fatjar”捆绑在一个 jar 中。由于 applet 是一项旧
如何查看 JWS 应用程序堆栈跟踪? 最佳答案 如果您指的是 Java Web Start,那么您需要进入 Java 设置并打开控制台。 (将其设置为“始终”显示。)下次单击 JNLP 时,控制台将启
我正在部署一个需要一些外部库才能运行的 swing 客户端。我如何才能通过下载它们在 JNLP 中?是否有使它们可用的配置或可以放置它们的文件夹? 最佳答案 如上所述here ,必须可以使用 href
我有一个使用许多数据文件的 swing 应用程序,这些数据文件会不时更改。如何将这些数据文件加载到客户端计算机上?有什么方法可以创建类似结构的文件夹并运行批处理文件等吗?任何帮助表示赞赏。 最佳答案
我的 JWS 应用程序 jar 已签名1,当我启动该证书时,它不会要求任何东西,只是抛出一个异常,说明您的应用程序已被阻止。 如果我安装该证书它就可以工作,但是我如何强制我的应用程序给出一条消息来安装
我已获得可信机构颁发的证书(已获得 .pfx 文件)。 我像这样用 jarsigner 签署了我所有的 .jar 文件: jarsigner -storetype pkcs12 -keystore m
是否可以将 Tomcat 与带有 Java WebStart 的 Spring 应用程序捆绑在一起?如何捆绑? 最佳答案 Jetty提供对嵌入的支持,然后您将在 jnlp 中声明 jar 文件,并从主
是否可以在 HTML 中嵌入小程序,以便将其显示在浏览器窗口中,然后通过 JNLP 文件通过 Java Web Start 启动,而不是使用浏览器的 Java 插件?如果是这样,这是如何完成的? 我只
我确实写了一个简单的 java web 服务(使用 javax jws)。我正在尝试将此服务部署到 openshift 的 Jboss 服务器中。当我尝试访问该服务时,我收到了上述异常。 Java 服
我正在尝试将一个简单的 java servlet 部署到 Tomcat,它使用部署到本地主机上同一个 Tomcat 的 Web 服务。我正在 Netbeans 中处理 Maven 项目。 servle
我正在编写后端代码以在 Node.JS 中验证来自 Google 的 SafetyNet API 的 JWS。我很惊讶没有为此找到现成可用的模块,所以我开始使用可用库查看 JWS 的一些简单验证: 首
刚刚了解 JOSE,我知道 JWE 用于加密,而 JWS 用于签名。我似乎无法找到既加密又签名的有效负载的示例。 让我们假设我有一个有效载荷 hello world .做这样的事情是正确的吗? JWS
我不明白为什么存在 JWS 不 protected header 。 对于某些上下文:JWS 不 protected header 包含不受完整性保护的参数,并且只能与 JSON 序列化一起使用每个签
我在AWS-EKS中运行我的应用程序,而我的Jenkins实例尚未容器化。为了部署我们的应用程序,我们在Jenkins Pipeline中使用kubectl命令。我想知道通过Jenkins部署Kube
我有一个使用 swing-layout 的旧应用程序,我必须通过 java webstart 使其可用。它从 netbeans 运行良好,但如果我使用 jws 启动它,我会收到此错误: excepti
我在确定如何使用 Java Web Start 程序写入文件时遇到一些问题,我想将文件写入描述已上传到云服务器的文件的服务器。我还希望从客户端发送文件名和路径等数据,以便我可以在用户和云存储设施之间创
为什么我的 JWS 应用程序不响应 Swing 按钮操作? 我有一个在 Eclipse 中创建的程序。它收集有关连接到本地网络的设备的信息并将其显示在 JTable 中。在环境中它执行得很好 befo
我是一名优秀的程序员,十分优秀!