我使用此示例创建了一个Web服务:
http://www.albeesonline.com/blog/2008/07/27/creating-a-webservice-using-rad-7/
当我调用Web服务来获取WSDL时,我使用这样的URL:
http://acme.com/storefront/services/InventoryInquiry?wsdl
WebSphere使用带有这样的URL的WSDL页面进行响应:
http://acme.com:9082/storefront/services/InventoryInquiry/wsdl/InventoryInquiry.wsdl
我希望WebSphere使用SSL和端口443进行响应,而不是WebSphere默认主机端口。
我尝试在WebSphere控制台中修改“提供HTTP端点URL信息”页面,以便应用程序使用“https://acme.com:443”作为“HTTP URL前缀”,但即使重新启动WebSphere,WebSphere也不会使用它
如何配置WebSphere以便在响应Web服务请求时不使用其默认端口?
我正在使用WebSphere 6.1。
一些背景资料:
该服务包含在使用Struts作为其设计模式的J2EE应用程序中。 struts-config.xml配置为在端口80和443上为应用程序提供服务。应用程序运行的WAS服务器由Apache Web服务器提供,该服务器通过负载平衡器将请求重定向到应用程序。
AWS load balander配置在四个单独的WAS服务器之间引导请求,每个服务器都提供应用程序的副本。每个WAS服务器都配置为将唯一的服务器ID字符串传递回用户。 AWS使用此字符串来确定哪个WAS服务器将处理用户发出的后续请求。这一切都适用于Struts处理的J2EE应用程序部分,但Web服务存在于该上下文之外。这似乎是Web服务使用WAS默认安全端口而不是Struts中定义的端口进行响应的原因。
我无法将WAS默认安全端口更改为443,因为我不能在同一台服务器上同时监听端口443的两个WAS实例。
答案 0 :(得分:1)
一般来说,您有两种选择:
1.您可以安装IBM Http Server(IHS)和WebSphere Plugin来将请求路由到WebSphere。 IHS默认使用80和443端口
2.更改WebSphere中的默认SSL端口 - 在Server > Ports
中将WC_defaulthost_secure
从944x更改为443。
您的问题中存在第二个问题 - 您是要使用SSL整体服务还是仅使用WSDL进行保护? 要进行配置,您需要定义安全约束以保护选定的URI,或者将HTTP服务器配置为仅允许对服务进行SSL访问。
<强>更新强>
如果您前面有Apache Web服务器,那么安装并配置WebSphere插件(如果您当前使用mod_proxy或其他)。 WebSphere Plugin可用于Apache,并将在多个WAS实例之间进行调度和负载平衡(如果它们是集群的,那么您可以从Deployment Manager自动生成插件,如果您有许多独立实例 - 您将需要合并插件,有一个工具为此)
您的应用使用Struts并不重要,您的wsdl仍然可以通过Http服务器和插件提供服务。
要重定向到HTTPS,您需要从其他帖子security-constraint in web.xml is not enforced解决该问题,因为我认为它是相同的环境。