问题标签 [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.
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 堆栈。
java - 使用 jaxb 外部绑定自定义时出错
我使用 wsdlc 工具(weblogic 10.3.1)从 wsdl 生成类。我有以下外部 jaxb 绑定自定义文件:
编译的错误消息是:找不到符号 my.MySuperClass。并且来自 javac:“我的包不存在”。类路径 = 我通过<pathelement location=
etc. 包含的所有内容以及来自 eclipse 插件的 60 行。问题在于 wsdlc 启动的 javac 命令。此命令的类路径是正确的(例如硬编码路径),但仍然“包...不存在”。
ant中wsdlc的用法是这样的:
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上都运行。
非常感谢任何有关使用数据库密码对用户进行身份验证的帮助,谢谢。
java - 使用嵌入式 Jetty 7 发布 JAX-WS 端点
有人可以帮忙吗?
我想使用嵌入式 Jetty 7 作为端点。这是我尝试过的:
}
但我看不出这是否真的使用 Jetty 而不是默认的 sun HttpServer。
一个博客提到
但是 Jetty 7 中似乎没有这样的 HttpServerProvider 。
感谢您的帮助,阿克塞尔。
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 查询:
我也尝试过如下查询:
有人对我可以尝试什么有任何想法吗?我已经在 JAX-WS 端尝试了几种不同类型的注释来更改 SOAPBinding 的类型等,但似乎没有任何东西可以使其与 Microsoft SSRS 一起使用。
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。
我是一个相对新手,所以我可能缺少一些东西。如果是这样,请告诉我!
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 而崩溃?是否有解决此问题的解决方法?任何建议将不胜感激。谢谢
——文尼
java - 为 Web 服务获取客户端的 IP 地址
我正在使用 JAX-WS,但无法检索正在使用 Web 服务的客户端信息。我已经找到了如何使用 JAX-RPC 和 Apache Tomcat Axis 来完成它,但不是使用 JAX-WS。有人对此有任何想法吗?
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 一起工作?
提前致谢
乔纳森
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 的开头!问题仍然是只使用了complexType
s 并且simpleType
s(也可以导致类)和元素仍然是 Javadoc-less。