问题标签 [jax-ws]

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 回答
1634 浏览

java - WSContext.getUserPrincipal() 为密码摘要身份验证返回 null

在我的 WebService 中,我需要记录调用者的 ID,但 wsContext.getUserPrincipal() 会返回 null,即使用户已使用 WS-Security 和密码身份验证进行身份验证。根据 JAX-WS 2.1 的 JavaDocs WSContext.getUserPrincipal() 只有在用户未通过身份验证时才应返回 null。

我必须在安全处理程序中做些什么来将用户主体设置到 WSContext 中吗?文档似乎表明它是自动完成的。

我在 Tomcat 上使用 Metro 1.1 堆栈(我认为是 1.1.5)和 jax-ws 2.1.3 堆栈。

0 投票
3 回答
3000 浏览

java - 使用 jaxb 外部绑定自定义时出错

我使用 wsdlc 工具(weblogic 10.3.1)从 wsdl 生成类。我有以下外部 jaxb 绑定自定义文件:

编译的错误消息是:找不到符号 my.MySuperClass。并且来自 javac:“我的包不存在”。类路径 = 我通过<pathelement location=etc. 包含的所有内容以及来自 eclipse 插件的 60 行。问题在于 wsdlc 启动的 javac 命令。此命令的类路径是正确的(例如硬编码路径),但仍然“包...不存在”。

ant中wsdlc的用法是这样的:

0 投票
7 回答
105262 浏览

java - JAX-WS 和 BASIC 身份验证,当用户名和密码在数据库中时

我是 JAX-WS 的新手,有一点我不明白。

有大量关于如何设置 JAX-WS 安全性的教程,但在几乎所有情况下,BindingProvider.USERNAME_PROPERTY 和 BindingProvider.PASSWORD_PROPERTY 都存储在一些 .xml 文件中(取决于我相信的容器)——它们是“硬编码的”那是。这就是我不明白的。如何通过将 BindingProvider.USERNAME_PROPERTY 和 BindingProvider.PASSWORD_PROPERTY 与数据库中的用户名和密码进行比较来验证 Web 服务客户端?我尝试在客户端设置 BindingProvider.USERNAME_PROPERTY 和 BindingProvider.PASSWORD_PROPERTY,如下所示:

然后,在服务器端检索如下:

但我总是得到空值,我没有在 xml 中设置任何东西,web 服务工作得很好,除了我不能得到那些变量:(

我在 java 1.6、tomcat 6 和JAX-WS上都运行。

非常感谢任何有关使用数据库密码对用户进行身份验证的帮助,谢谢。

0 投票
3 回答
9753 浏览

java - 使用嵌入式 Jetty 7 发布 JAX-WS 端点

有人可以帮忙吗?

我想使用嵌入式 Jetty 7 作为端点。这是我尝试过的:

}

但我看不出这是否真的使用 Jetty 而不是默认的 sun HttpServer。

一个博客提到

但是 Jetty 7 中似乎没有这样的 HttpServerProvider 。

感谢您的帮助,阿克塞尔。

0 投票
1 回答
1035 浏览

java - Microsoft SSRS 使用 JAX-WS Web 服务

我使用 JAX-WS (v2.1.3 - Sun JDK 1.6.0_05) 开发了一个 Web 服务,当我使用 Java 客户端或 SoapUI 或其他 Web 服务测试工具时它工作得很好。我需要使用 2005 Microsoft SQL Server Reporting Services 使用此服务,我收到以下错误

如果我使用 HTTP 代理来检测 SSRS 发送的内容,我会将 EF BB BF 视为帖子正文的开头,而 JAX-WS 不喜欢这样。如果我删除特殊字符并使用 Fiddler 重新提交请求,那么 Web 服务调用将起作用。

我的问题是为什么 SSRS 会引入这些特殊字符,我怎样才能让它停止?如果我不能阻止它,我怎样才能让 JAX-WS 忽略它们?这是我的 SSRS 查询:

我也尝试过如下查询:

有人对我可以尝试什么有任何想法吗?我已经在 J​​AX-WS 端尝试了几种不同类型的注释来更改 SOAPBinding 的类型等,但似乎没有任何东西可以使其与 Microsoft SSRS 一起使用。

0 投票
1 回答
2973 浏览

java - 使用默认 sax 解析器时,jaxb unmarshal 可被精心制作的 xml 滥用?

因此,在我当前的项目中,我使用 JAXB RI 和 Sun 的 JRE(我相信是 Xerces)中的默认 Java 解析器来解组任意 XML。

首先我使用 XJC 编译一个如下形式的 XSD:

在“好案例”中,一切都按设计进行。也就是说,如果我传递了符合此模式的 XML,那么 JAXB 会正确地将其解组为对象树。

当我通过外部 DTD 引用传递 XML 时,问题就出现了,例如

在解组这样的事情时,SAX 解析器尝试加载远程实体(“ http://somehost/foobar.dtd ”),尽管这个片段显然不符合我之前用 XJC 编译的模式。

为了规避这种行为,因为我知道任何符合标准的 XML(根据我编译的 XSD)都不需要加载远程实体,所以我必须定义一个自定义 EntityResolver 来缩短所有远程实体的加载。所以不要做类似的事情:

我被迫这样做:

所以我的最终问题是:

当使用 JAXB 解组时,如果在没有加载这些远程实体的情况下可以将相关 XML 识别为无效时,底层 SAX 解析器加载远程实体是否应该自动短路?

另外,这似乎不是一个安全问题吗?鉴于 JAX-WS 在底层依赖 JAXB,似乎我可以将特制的 XML 传递给任何基于 JAX-WS 的 Web 服务,并导致 WS 主机加载任意 URL。

我是一个相对新手,所以我可能缺少一些东西。如果是这样,请告诉我!

0 投票
3 回答
6916 浏览

java - 当 SOAP 正文包含 UTF-8 BOM 时出现 JAX-WS 错误

我使用部署在 WebLogic 10.3 上的 JAX-WS (v2.1.3 - Sun JDK 1.6.0_05) 开发了一个 Web 服务,当我使用 Java 客户端或 SoapUI 或其他 Web 服务测试工具时它工作得很好。我需要使用 2005 Microsoft SQL Server Reporting Services 使用此服务,我收到以下错误

由于异常而无法创建 SOAP 消息:XML 阅读器错误:意外字符内容

如果我使用 HTTP 代理来检测 SSRS 发送到 JAX-WS 的内容,我会将 EF BB BF 视为帖子正文的开头,而 JAX-WS 不喜欢这样。如果我删除特殊字符并使用 Fiddler 重新提交请求,那么 Web 服务调用将起作用。

为什么 JAX-WS 会因标准 UTF-8 BOM 而崩溃?是否有解决此问题的解决方法?任何建议将不胜感激。谢谢

——文尼

0 投票
4 回答
42878 浏览

java - 为 Web 服务获取客户端的 IP 地址

我正在使用 JAX-WS,但无法检索正在使用 Web 服务的客户端信息。我已经找到了如何使用 JAX-RPC 和 Apache Tomcat Axis 来完成它,但不是使用 JAX-WS。有人对此有任何想法吗?

0 投票
3 回答
6362 浏览

java - JDK1.5 的 JAXWS 代码生成和实现

我们正在尝试从一系列 WSDL(每个都有自己的 XSD)生成源代码存根。我们可以很好地做到这一点,并且在 JDK1.6 下完美运行,但是我们需要它在 JDK1.5 下运行。

我们使用 jaxws-maven-plugin 来生成源代码,但是它取决于可用的 wsimport 二进制文件(这在 JDK1.5 中不可用)。我们找到了解决方法,我们现在可以生成源代码。

最后一个问题是当我们尝试将编译后的存根代码与 Spring (2.5.6) 一起使用时,我们正在使用 JaxWsPortProxyFactoryBean 与生成的客户端代码进行交互。我们得到一个 java.lang.NoClassDefFoundError: javax/xml/ws/soap/Addressing。我调查了为什么会这样,发现 javax.xml.ws/javax-api/2.1 依赖项不包含此类。我将版本号升级到 2.1-1,现在当我们构建项目(生成源代码)时,我们收到以下错误:

谁能为此提供解决方案,以便我们可以生成我们的 JAXWS 客户端存根代码并使其与 JaxWsPortProxyFactoryBean 一起工作?

提前致谢

乔纳森

0 投票
4 回答
19601 浏览

java - 如何使生成的类包含 XML Schema 文档中的 Javadoc

我目前正在使用在大多数类型和元素上具有<xsd:annotation>/的 XML 模式。<xsd:documentation>当我从这个 XML Schema 生成 Java Bean 时,这些 Bean 的 Javadoc 只包含一些关于类型/元素的允许内容的通用生成信息。

我想<xsd:documentation>在相关位置查看标记的内容(例如,complextType 的标记内容应该显示在生成的表示该 complexType 的类的 Javadoc 中)。

有什么办法可以做到这一点?

编辑:这个 XML Schema 将在带有 JAX-WS 的 WSDL 中使用,所以这个标签也可能是合适的。

编辑 2:我读过关于<jxb:javadoc>. 据我了解,我可以在单独的 JAXB 绑定文件中或直接在 XML 模式中指定。这几乎可以解决我的问题。但我宁愿使用现有的<xsd:documentation>标签,因为 Javadoc 不是文档的主要目标(它主要是关于数据结构的信息,而不是关于从中生成的 Java Beans),并且允许非 JAXB 工具访问信息为好。两者都提供文档<jxb:javadoc>并且xsd:documentation>“感觉”是错误的,因为我无缘无故地复制数据(和工作)。

编辑 3:感谢 Pascal 的回答,我意识到我已经有了一半的解决方案:<xsd:documentation>scomplexType被写入其 Javadoc 的开头!问题仍然是使用了complexTypes 并且simpleTypes(也可以导致类)和元素仍然是 Javadoc-less。