问题标签 [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.

0 投票
1 回答
2171 浏览

java - 申请 JAX-WS 以将返回对象解包到列表的定制是什么?

我正在尝试查找是否有一种方法可以自定义例如ChemSpider WebServiceCSID2ExtRefs的操作,该操作将字符串列表作为参数之一传递并返回对象列表:

wsimport接口方法生成的是(with jaxws:enableWrapperStyle = true):

但我想打开ArrayOfExtRefArrayOfString打开列表,例如获取以下内容:

如果我手动进行此更改,JAX-WS 工作正常。我想知道,是否有任何方法可以为此编写适当的自定义

0 投票
0 回答
1805 浏览

java - 在使用 wsimport ant 任务时为所有包名称添加前缀

我正在使用 wsimport ant 任务来生成客户端代码。众所周知,自动生成的类的包名是根据位于 WSDL 中的名称空间确定的。
我想更改这些包名并为包名添加前缀。例如,如果 wsdl 中的命名空间是com.example,则将生成包“prefix.com.example”。

我尝试了 2 种不同的解决方案来处理这个问题;但他们不能帮助我。

  1. -p prefix.com.examplewsimport ant 任务中使用的命令对我不起作用,因为所有生成的类都包含在使用此命令的一个包中。
  2. jaxws 或 jaxb 绑定文件以相同的方式工作。如果我添加此标记<jaxb:package name="prefix.com.example" />,生成的类将包含在一个名为prefix.com.example.

我只想在生成客户端代码时为包名称的所有命名空间添加前缀。
关于这个主题还有其他解决方案吗?

提前致谢。

0 投票
1 回答
267 浏览

java - Web 服务接口在哪里?

我正在使用 JBoss Developer Studio (基于Eclipse)开发一个中型项目。我们有 2 个 Web 项目,其中 1 个使用 JBossWS 和 JAX-WS 包含/管理 Web 服务。我的老板正在更新软件架构文档,并问我Web Service项目上生成的接口在哪里。我告诉她这些接口是使用工具默认生成的,然后我开始搜索所有项目并且没有显式接口(显式我的意思是带有 a 的 MyService.java 文件public interface MyService),我可以看到我们的类、WSDL 文件和web.xml 中配置的 servlet 调用其对应的服务实现类。

是否需要为这些服务创建接口?万一它是或可能是,是否有任何工具可以帮助我和团队创建这些接口,因为我们为每个服务类提供了大约 100 个方法?

只是为了添加一些信息,我们有另一个 Web 项目,它使用接口使用这些服务并通过 Web 调用 WSDL 文件。

0 投票
2 回答
6308 浏览

soap - 如何提取 JAX-WS @RequestWrapper 属性(或完整 bean)

是否可以从 RequestWrapper 对象中提取属性(如 XML 属性值)?

在我的实现中,我想使用属性的值,但不能用@WebParam 引用它,因为这仅适用于元素(我相信)

@SOAPBinding 定义为“文档/文字/包装”

WSDL(相关部分,目标属性位于 **):

SEI 抽象方法(能够使用 WebParam 指定 XML 元素):

执行:

很明显,我如何读取 @RequestWrapper bean状态的值(通过 @WebParam 的实体),但是有什么方法可以访问状态中的值(句柄)。据我了解,WebParam 不支持属性,只支持元素。

另一种询问/寻求解决方案的方法可能是询问如何访问 RequestWrapper 引用的完整 bean,在本例中为GetStatus

我知道如果我转换到 Document/Literal/Bare,我可以简单地让参数和返回值反映 bean,但我更喜欢使用 Wrapped 来解决这个问题,因为所有信息都指向这是最广泛首选的绑定。

0 投票
1 回答
629 浏览

web-services - 如何更改 Jax-WS WSDL @IDREF 绑定

我成功地在具有 Jax-WS Spring 支持的 Tomcat servlet 容器上公开了一个合同优先的 JAX-WS Web 服务。不过,我对xs:idref类型有问题。原始 XSD 文件包含复杂类型

xjc 正确编译为

但是,当我部署 web 服务时,@XmlIDREF注释被忽略,我最终xs:anyType在生成的 WSDL 的命名空间声明中得到一个

有问题的 web 服务的客户端报告说,他们无法使用此anyType存在生成客户端存根(使用 C#)。我将如何将其改回xs:idref?谢谢。

0 投票
1 回答
1627 浏览

web-services - 如何插入 SOAPHandler (JAX-WS)?

我想用 SOAPHandler 处理 SOAP 标头,即我已经创建了 SOAPHandler,但是如何将其插入指定的服务?换句话说,这个处理程序应该处理这个服务的消息。可能我需要使用一些注释或xml配置......?..

0 投票
2 回答
9411 浏览

web-services - 使用 JAX-WS 进行异步 Web 服务调用:使用 wsimport 支持异步还是自己滚动?

Young Yang有一篇优秀的文章解释了如何使用 wsimport 创建具有异步 Web 服务调用的 Web 服务客户端工件。异步要求 WSDL 具有标记

<enableAsyncMapping>true</enableAsyncMapping>

在其绑定部分。如果您对带有 JAX-WS 注释的 Java 类使用自下而上的方法,则不能直接在 WSDL 中执行此操作,因为 WSDL 是 Web 服务器上生成的工件。相反,当在 WSDL 上执行 wsimport 时,您可以使用 Ant 或 Maven 等构建工具来包含此绑定。

生成的客户端工件具有异步方法调用,这些方法调用返回

或一个

这是一个未来。

阅读 Yang 的文章后,我的问题是为什么不使用 Executors 和 Futures 来滚动我自己的异步 Web 服务调用。wsimport 创建的工件是否提供了一些我无法通过自己滚动的方法看到的优势?

如果有人对这两种方法都有经验或见解,我将不胜感激您的反馈。

0 投票
2 回答
4377 浏览

java - 为什么 JAX-WS 导出的对象需要默认构造函数?

JAX-WS 要求传输的所有类都具有默认构造函数(无参数构造函数)。我不理解这个要求,因为客户基于 WSDL 创建自己的类。IMO 此要求仅对用作 Web 服务输入参数的类有意义。

有谁知道如何规避这个要求?

0 投票
1 回答
721 浏览

java - jaxws 复杂类型包

假设我有一个使用 wsimport 的 jaxws soap 生成客户端使用的 WCF 服务。服务 SEI 看起来像

它采用复杂类型 Person 并返回相同类型的 Person 并生成 DoSomething 看起来像

如果 Person 与 DoSomething 的包相同,则一切正常,只要我将 Person 移到其他地方,WCF 服务就无法从 Person 对象中获取任何内容(字段为 null 或 0),来自 WCF 的返回值无法被 JAXWS 正确反序列化,虽然没有例外。

我注意到如果它们在同一个包中,那么 setPerson 将被调用,但如果它们在不同的包中则不会。

我想知道是否可以将复杂类型 Person 放在与 DoSomething 不同的包中。

0 投票
3 回答
13204 浏览

java - 在 Tomcat 7 中部署 JAX-WS webapp

我正在开发简单的 JAX-WS 网络服务。我正在使用 ANT 构建脚本创建 WAR 文件。该文件在部署到 Tomcat 7 服务器时,抛出以下异常,并出现如下部署错误。

JAXB 2.1 API 是从引导类加载器加载的,但是这个 RI(来自 jar:file:/D:/DreamSoln/Server/apache-tomcat-7.0.29/webapps/WebserviceDemo/WEB-INF/lib/jaxb-impl. jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) 需要 2.2 API。使用认可的目录机制将 jaxb-api.jar 放置在引导类加载器中。

我安装了 JDK 1.6,我尝试了认可机制,即​​我创建了 lib/endorsed 目录并在其中复制了 jaxb-api.jar 和 jaxws-api.jar。但它仍然不起作用。

我需要从我的网络应用程序的 WEB-INF/lib 中删除 jaxb-api.jar 和 jaxws-api.jar 吗?

还需要做什么?