- 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/
我们正在创建一个 n 层 Silverlight LOB 应用程序,并且正在考虑使用 .NET RIA 服务。我们不清楚这与我们当前的 WCF 服务 API 的关系在哪里。我们当前的架构是: 银光
上下文:我在celery + rabbitmq堆栈上有一个主工作系统。 系统已docker化(此处未提供worker服务) version: '2' services: rabbit:
我是 Windows Azure 新手,我正在尝试将我的 Web 应用程序部署到 Windows Azure。在我的应用程序中,我使用了一些 Web 服务,现在我想知道如何在 Windows Azur
因此,根据我对服务的了解,自定义对象似乎是写入服务以返回数据的方式。如果我正在编写将用于 1) 填充数据库或 2) 为网站提供信息的服务,是否有返回数据集/数据表而不是包含所有这些的自定义对象列表的用
我在 google 和 stackoverflow 上都找过答案,但似乎找不到。我正在尝试将 azure 实验的输出获取到应用程序。我使用 ibuildapp 和谷歌表单制作了该应用程序。如何使用 g
我不小心删除了 kubernetes svc: service "kubernetes" deleted 使用: kubectl delete svc --all 我该怎么办?我只是想删除服务,以便
我正在努力确定解决网络服务问题的最有效方法。 我的情况:我正在开发一个 Android 应用程序,它通过 Web 服务从 mysql 数据库(在我自己的服务器 PC 上)存储和检索数据。用户按下提交按
我一直在翻阅 Android 文档,我很好奇。什么时候绑定(bind)服务而不是不绑定(bind)服务?它提供了哪些优点/限制? 最佳答案 When would you bind a service
我试图从架构的角度理解 hive,我指的是 Tom White 关于 Hadoop 的书。 我遇到了以下关于配置单元的术语:Hive Services、hiveserver2、metastore 等。
我的问题:安装服务后我无法导航到基地址,因为服务不会继续运行(立即停止)。我需要在服务器或我的机器上做些什么才能使 baseAddress 有效吗? 背景:我正在尝试学习如何使用 Windows 服务
我正在努力就 Web 服务的正确组织做出决定。我应该有多个 ASMX 来代表 Web 服务中的不同功能,还是应该有一个 ASMX? 如果我有多个 ASMX,这不构成多个 Web 服务吗? 如果我只有一
我正在从事一个在 azure 平台上提供休息服务的项目。该服务由 iPhone 客户端使用,这是选择其余方法的重要原因之一。 我们希望通过 AccessControlService(ACS) 并使用
我是 Ionic 新手,正在使用 Ionic 3.9.2 我有几个终端命令来为我的 ionic 应用程序提供服务,但是,我没有发现这两个命令之间有任何区别。 ionic serve 和 ionic s
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
作为项目的一部分,我期待着问这个问题。我过去有开发和使用 Web 服务的经验,并且非常熟悉这些服务。但是,有人告诉我,作为下一个项目的一部分,我将需要使用“安全”的 Web 服务。您能否提供一些见解,
我浏览了很多关于这个问题的信息,但找不到解决方案。这里的问题是,我想使用 Apache Cordova 和 Visual Studio 连接到 wcf。因此,如果有人找到合适的工作解决方案,请发布链接
我在 Windows 服务中托管了一个 WCF(从 MS 网站示例中选取),我可以使用 SOAP UI 访问和调用方法。但是,当我尝试使用 jquery 从 Web 应用程序调用相同的方法时,我不断收
我们构建了一个 Android 应用程序,它从 Android 向我的 PHP 服务器发送 HTTP 请求。作为响应,Web 服务将 JSON 对象发送到 Android 应用程序以显示结果。 就像其
我想在 android 应用程序中调用 soap web 服务,它需要一个枚举值作为参数,它是一个标志枚举。如何从 Android 应用程序将一些值作为标志枚举传递给此 Web 服务方法? 我使用 K
我尝试在模拟器上安装 Google Play。我已按照 Google Dev Site 中的说明进行操作. 使用 ADV 管理器似乎没问题,设备的目标是 Google API 版本 22,但是当我运行
我是一名优秀的程序员,十分优秀!