- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 JBoss 4.2.2 中部署了一个 EJB3 bean 作为 Web 服务。在生产环境中,服务器位于将请求重定向到 Jboss 服务器的 Apache 服务器之后。这使得 WSDL 有错误的 soap:address 位置。我能够通过 server\default\deploy\jbossws.sar\jbossws.beans\META-INF 中的配置文件更改端口和主机名,但我无法将协议(protocol)切换到 https .
我找到的唯一方法是指定我自己的 WSDL(通过 here)。通过在 WSDL 中指定 https,JBoss 认为它是 https。然而,虽然这在生产中很好,但在 QA 中没有使用 https(并且连接到它的服务需要有效的 https,所以自签名证书不会这样做)。因此,虽然我可以获得 QA 的真实证书(假证书颁发机构不会这样做),但我宁愿在 QA 中使用 http。有没有办法强制 JBoss 更改协议(protocol)或以其他方式更改地址,以便它在 soap:address 中使用 http?
编辑:这个问题似乎是最近在他们的 bug database 中提出的并被拒绝了。这对我来说意味着他们有变通办法。但它是什么?
进一步编辑:在这一点上,我知道 EJB3 拦截器不起作用 ( they are not activated at all ) 并且 SOAPHandler 不会拦截检索 WSDL 的调用(经过测试 - 它们会拾取其他所有内容)。所以过滤器的想法很有趣,但还远未明确将它放在哪里。
JBoss 显示的 URL 是:
端点名称 jboss.ws:context=QuickBooks-QuickBooksWebService,endpoint=QBWSBeanEJB端点地址 https://127.0.0.1:8443/QuickBooks-QuickBooksWebService/QBWSBeanEJB?wsdl
(请注意,当我使用自定义 WSDL 强制使用 https 但 JBoss 配置为重写它时)。
我使用的 JBossWS 版本是与 4.2.2 捆绑在一起的版本,根据 this是2.0.1
编辑:关于 rewriting ,这确实是尝试过的。这是我发现的。我可以让它重写主机(或不需要)和端口,但仅限于公认的协议(protocol)。因此,为了让它发出 https,我必须将 bean 的传输保证配置为 CONFIDENTIAL,并在 JBoss 服务器上启用 https,然后所有请求都被重定向到 JBoss 中的 https。我没有测试这是否适用于 mod_jk(如果需要 CONFIDENTIAL,AJP 协议(protocol)是否仍然有效,如果请求来自 AJP,WSDL 是否会获得正确的协议(protocol)?我没有测试它),但是这样做具有相同的净效果——请求必须通过 https。没有办法让请求通过 http 或 AJP 传入,然后让它发出一个 soap:address 作为 https,特别是在每个服务器的基础上配置(在 QA 和开发中,http,但在生产 https 中,即使ssl 被 Apache 终止了)。使用自定义 WSDL 让我更接近,因为请求是通过 HTTP 传入的,但是 soap:address 说的是 https。非常适合生产(使用重写功能将端口推送到 443 而不是 8443),但对 QA 没用(我不关心开发,因为开发构建可能不同,如果需要创建不同的 jar,但我'如果我能避免的话,我对具有不同构建过程的 QA 和生产不满意)。
最佳答案
您为什么不在 Web 应用程序上设置一个 servlet 过滤器来监视 WSDL 请求并使用其配置中的值重写响应中的 soap:address
?然后您可以根据需要进行设置。
这可能不是最优雅的解决方案,我同意 :-) - 但那本来是为了 JBoss 中的可配置性,不是吗?如果 JBoss 最终引入了此功能,您只需删除过滤器即可。
更新:典型的 JBoss EAR 具有以下结构:
myapp.ear|+ META-INF |+ applications.xml and jboss-app.xml|+ myapp.war |+ web pages and JSP /JSF pages |+ WEB-INF |+ web.xml, jboss-web.xml, faces-config.xml etc. |+ lib |+ tag library JARs |+ classes |+ servlets and other classes used by web pages|+ myapp.jar |+ EJB3 bean classes |+ META-INF |+ ejb-jar.xml and persistence.xml|+ lib |+ Library JARs for the EAR
您能否确认您部署的 EAR 具有此结构?如果不是,那有什么不同?
更新 #2:JBoss 自动为 EJB3 bean 生成一个 web.xml
,它位于正在部署的 EAR 中的 JAR 中。此 web.xml
绝对是硬编码的(即不使用您可以调整的 XML 文件作为基础),因此更改它以包含过滤器很尴尬(尽管并非不可能) (您基本上需要更改 jboss-beans.xml
中的各种内容以指向您自己的 web.xml
生成器,它可以做任何您想做的事情)。如果 EJB3 bean 在 WAR 文件中,开发工作会少很多——然后您可以使用 WAR 的 web.xml
以常规方式配置过滤器,您大概可以控制它。但是,如果您使用的是第三方 JAR,那么这可能会有问题——或者可能不是。在不知道细节的情况下,很难看出哪种方法是最好的。
从问题的作者处编辑:
感谢大家的努力。这似乎是基本方法 - 拦截和更改 WSDL。如果你不能让你的网络服务成为 war 中分配的 POJO,你可以在其中使用 servlet 过滤器,那么你可以制作一个代理请求的 servlet,然后这样做。 That was my solution .
关于java - JBoss 4.2.2 网络服务肥皂 :address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1369624/
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
有谁知道区别吗? 最佳答案 如果您想玩可移植的可执行文件,就没有办法绕过 the specs 的副本。 . 已经有一段时间了,但如果内存正确地为我服务:IT 和 IAT 是相同的,除了 IAT 在解析
我正在尝试在 ec2-instance 上安装 Hadoop-2.6.0。 我下载并安装了 Hadoop。我还设置了环境变量。尝试启动 hdfs 服务时出现以下错误。 [ec2-user@ip-10-
我写了一个示例程序。如果我打印 pa 和 pb 的地址都是不同的。你能告诉我为什么会这样吗? #include using namespace std; class A { int x; }; cla
*&x 是否总是等于 x?如果不是,什么时候不是? &*x 是否总是等于 x?如果不是,什么时候不是? 我的猜测是 (1) 总是正确的,但 (2) 并不总是正确的,因为 x 可能并不总是一个指针,所以
我有一个 Address 类,它是一个非常简单的元数据容器。 (在底部。) 我有一个 Address 对象数组,它不是可选的 - 它肯定存在。我还有一个类维护这些引用的可选列表,如下所示: publi
我在理解 wsdl 中 soap:address 和 http:address 标签之间的区别时遇到了一些问题。它可以互换吗?我可以使用 soap:address 代替 http:address 吗?
关于AT (...) ld 的指令, this source状态: AT ( ldadr ) The expression ldadr that follows the AT keyword spec
我正在使用 Tensorflow 的 C API 在并行模拟中进行推理。因为我想要 AVX 支持,所以我从源代码编译了 Tensorflow。我链接它并使用 wmake 编译所有内容。 现在,如果我开
就像标题一样,我是cxf的新手。只是想知道 soap:address 和发布时在应用程序上下文中的 jaxws:endpoint 中指定的地址有什么区别? 此外,在jaxws:endpoint中,地址
#include #include using namespace std; class myexception: public exception { virtual const char*
C/C++ 应用程序抛出该错误,如何开始调试(比添加打印语句更好的主意)? 最佳答案 第二个地址是不是一个非常小的数字,比如 0x00000001 或 0x00000000?如果是这样,您可能只是忘记
如果我没记错的话,几天前它曾经显示“localhost”。我不确定是什么改变了 server.address().address 返回双冒号 (::) 。我在这里读到,如果它可用,它会返回一个 IPv
我现在正在使用 MPI 练习简单的并行编程。该代码旨在通过随机生成 N*N 矩阵并使用简单的邻域加权平均滤波器来模拟图像处理,而不处理第一行和最后一行和列。我在编译时没有出错,但在运行时出现了一些我无
这个问题在这里已经有了答案: How to retrieve range.address which is longer than 255 character? (2 个回答) 5年前关闭。 觉得很奇
当我尝试启动 Apache2 时收到以下消息: * Restarting web server apache2
我正在阅读一些有关指针和结构的内容,但我就是不明白:微 Controller 的头文件中有这样的内容: #define NVIC_BASE (SCS_BASE + 0x0100) /*ICER[0]
我有 alertmanager 作为 docker 容器在两台不同的主机上运行,并且两者都应该作为集群运行。两台机器都在同一个 vpc 内,并与私有(private) IP 地址通信。 我需要知道
在 Organization schema两者都有属性 address和 location . 什么时候应该使用每一个的真实世界例子? 地点 事件、组织或行动的地点。 地址 项目的物理地址。 最佳答案
我想要具有 FIFO 的服务器-客户端模型和客户端获取目录路径,但我收到错误“读:错误地址”和“写:错误地址”。 客户端 服务器错误:“读取:地址错误” 客户端错误:“写入:地址错误” 最佳答案 您可
我是一名优秀的程序员,十分优秀!