问题标签 [jax-ws-customization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在不调用 STSClient 的情况下将 SAML 令牌直接放入 JAX-WS 服务
去年我在此链接中为 Web 服务制作了 JAX-WS 客户端
此 Web 服务使用STS 服务来获取 SAML 令牌并使用它来访问主 Web 服务。我使用 apache cxf 的 wsdl2java 为这个 web 服务生成 JAX-WS 客户端。一切都很好。
最近他们更新了他们的 STS 服务端点。这个新的 STS 服务端点。其中有不同的签名和摘要算法。它在请求正文中有一些额外的元素。
我试图修改当前代码,使其支持新的 STS 服务。但是我的代码正在发送相同的 RequestSecurityToken 请求。我的意思是它不适合新的要求。我试图采用这一点,但我不能那样做。
新的 STS 服务需要http://www.w3.org/2001/04/xmldsig-more#rsa-sha256作为新的签名方法和http://www.w3.org/2001/04/xmlenc#sha256作为新的摘要算法。此外,它还需要请求正文中的以下元素:
另外,这里有细微的差别。我现在认为有两种方法:
- 如果我可以将旧代码更改为 STS 客户端发送具有这些值的请求。我尝试过但没有成功。
- 他们提供了一些支持从 STS 客户端获取 SAML 断言令牌和证明令牌的代码。如果我可以将 SAML 断言令牌直接放入我的 JAX-WS 客户端,那么这个问题也解决了。
我们将不胜感激任何帮助或建议
java - 如果请求类型与枚举中定义的不同,则拦截 SOAP 请求枚举参数以向用户发送消息
我们有 SOAP Web 服务,我们的方法首先是 WSDL。下面您会看到从 wsdl 通过 wsdl 生成的请求对象到 pom.xml 中的 java 插件。这是请求对象的样子:
@XmlRootElement(name = "XXXRequest") 公共类 GetXXXRequest {
TypeOfRequest 是枚举。现在 TypeOfRequest 有 7 个值。让我们说用户发送除了在 TypeOfRequest 中为其定义的 7 个值之外的任何其他值,然后它作为 NULL 出现,我们的验证无法验证它是否用户真的没有选择任何 TypeOfRequest 或提供了其他值而不是 7 个值。所以简而言之,如果用户选择了 7 值以外的任何其他值,我想验证并发送有意义的消息。我无法实现它。有什么办法可以做到吗?我有一个想法,我可以拦截它,但需要指导来实施它。我们正在使用 cxf 、 jaxws 和 Spring 框架。
jaxb - 结合 JAXWS 和 JAXB 绑定
我正在使用 jaxws-maven-plugin 自定义由 WSDL 文件生成的 JAXB bean。要自定义它们,我正在使用绑定文件。
基本上我想要:
- 防止生成 JAXBElement
- 自定义一些元素名称
我的绑定文件是:
问题是,如果我使用jaxws:bindings
作为根元素元素 1不起作用并生成 JAXBElement
如果我jaxb:bindings
用作根元素,那么元素 1可以工作,但元素 2不能,因为 xpath 表达式不匹配任何元素。
如何更正绑定文件以使两个元素同时工作?
cxf - 自下而上 JAX-WS 的 XSD 限制
我们使用 Spring 和 CXF 来提供 SOAP Web 服务。WSDL 是从 Java 代码生成的。
有没有办法在 Java 代码中定义适用于生成的 XSD 的验证规则?
例如,对一些 JSR 303 注释的支持会很棒。在这种情况下,此代码:
将评估为这样的 XSD:
java - 解组提供空值的嵌套 xml 数据
这里对于车辆信息,因为我可能有多个值,在我的 Java 对象中,我需要将车辆信息作为数组对某些项目依赖项执行。
这是我的java类
车辆信息
我正在使用以下代码进行解组
但是我将关键和价值作为车辆信息的 nul
java - 从 WSDL 文件生成 Java 代码
我是 Java 新手。我正在尝试创建 SOAP Web 服务客户端来使用需要用户名密码和 ssl 证书的供应商 Web 服务。
供应商向我提供了 SoapUI 项目文件。我在 SoapUI 中导入了项目文件并运行了测试。这些测试成功地进行了。
然后我使用 SoapUI 导出了 wsdl 文件并尝试使用 wsimport 生成 java 代码。我无法生成代码。我遇到了各种各样的错误,我试图通过在线搜索来解决这些错误,但没有一个解决方案有效。
我正在使用jdk1.8.0_152。和SmartBear 的 SoapUI 5.3.0 版。
我尝试在Windows 7的命令行上使用这个 wsimport 命令:
我收到了这条消息:
文件的第 4317 行:/C:/Projects/soapclient/vendor.xsd
使用 SoapUI 项目文件,他们还向我发送了以下文件:
- jaxbbinding.xml
- wsdlbinding.xml
- ACORD_v2.2.0.xsd
- ACORD-WSP_v2.0.0.xsd
- Soap12-信封.xsd
- xml.xsd
所以尝试了带有 -b 选项的 wsimport,如下所示:
我收到了这个错误:
不确定,但我应该向供应商索取新的绑定文件吗?
它可以在 SoapUI 中使用,所以它不应该与 wsimport 一起使用吗?
我尝试了所有解决方案来解决这个问题,包括在 jdk 文件夹中创建 jaxb.properties 文件,在 maven 的系统设置中添加 jvm 参数等。没有工作。
如果有人能指出我正确的方向并帮助解决这个问题,我将不胜感激。提前谢谢了。
wsdl - wsdl2java 输出只产生包名
我在我的 java 代码中使用了一个示例 wsdl。当我尝试打印输出时,它只返回包名,如:
仅当输出为列表时才会发生这种情况。
我的部分代码:
wsdl 网址:http ://holidaywebservice.com/HolidayService_v2/HolidayService2.asmx?WSDL
web-services - @WebResult 注释在 JAX-WS 中的工作原理
我正在尝试创建 Jax-ws WebServices。但坚持使用 JAX-WS 2.2 的这种行为。
我用以下方式编写了SEI类
上述SEI生成的wsdl如下:
和 XSD
SOAP 响应:
我尝试使用 wsimport 生成存根,这是我在生成的端口类中可以观察到的
我很想知道为什么 WebResult 名称在 wsdl 中与“return”不同,在soap Response 中为“GetServerTimeProperty”,在生成的存根中为“”。
此外,如果我不使用 @WebResult(name="GetServerTimeProperty") 注释 Web 方法,我的存根生成的客户端响应为空。
如果我用@WebResult(name="GetServerTimeProperty") 注释我的网络方法,我的soapResponse 如下所示:
@WebResult(name) 在 jax-ws 中是强制性的吗?我很想知道这个 webresult 注释如何在肥皂响应和客户端响应中产生影响。
每个“operationName”+“Respone”元素的名称是否应该是唯一的?我的 wsdl 有许多同名的元素
请就此提出建议,如果我们不注释,为什么 WebResult 名称返回肥皂响应为 null
java - 使用 jdk 8 的默认 jaxws-ri 实现禁用soap客户端的soap验证
我的环境是一个带有spring boot的maven项目。我正在使用 wsimport 从 WSDL 生成 JAX-WS 代码。当我收到肥皂响应时,我想禁用肥皂验证。我正在使用 jdk8 的 jax-WS 的默认实现。代码如下所示:
// (1) 现在构建 webservice 客户端
//(2) 禁用验证
//(3) 执行请求
我在谷歌搜索,我发现了一个禁用验证的选项:
(3) bindingProvider.getRequestContext().put("set-jaxb-validation-event-handler", sc.getSocketFactory());
但我似乎 jdk8 的 jax-WS 的默认实现不接受这个选项,但是它被 apache cxf 接受。那么,如何在 jdk8 的 jax-ws 的默认实现中停用验证?有没有办法在我的项目中加载 cxf 实现,所以我使用上一个选项来停用验证?有没有办法自定义 xml 验证?
web-services - 如何绑定多个wsdl文件?
我致力于通过 WSDL 文件升级某个客户提供的服务。在之前的版本中,这些服务在单个 WSDL 文件中提供,为此我使用单个 bindings.xml 文件来处理定制部分。现在,这些服务在多个 WSDL 文件(总共 9 个)中提供,这些文件之间具有内部引用。我想我需要多个绑定文件来处理自定义。但是, wsimport 似乎不适用于这种方法。
我努力了:
更改 wsdlLocation 属性的现有位置以指向需要自定义的最新 WSDL 文件之一;还必须处理其他文件以进行自定义,如何使用 bindings.xml 文件中的单个 wsdlLocation 属性来做到这一点?
在每个文件中添加多个具有 wsdlLocation 属性的绑定文件以指向其对应的 wsdl 文件,在这种情况下,由于 xml 文件和 wsdl 文件之间存在不匹配,我会遇到编译错误。
3.尝试将 wsdl 文件分离到不同的文件夹中并单独编译,由于内部引用,这当然不起作用。我猜所有的都将在一个目标中执行。
pom.xml:
Service1bindings.xml
Service2bindings.xml