Vin*_*nie 5 java configuration web-services glassfish wsgen
我有一个由wsgen通过maven生成的Web服务.当我将服务部署到Glassfish时,它将服务器URL放入WSDL中.我们的Glassfish服务器由Apache代理服务器提供.
这一切都意味着当有人访问我们的WSDL并查看他们看到的服务端点和soap地址位置时
http://app server url/service...
Run Code Online (Sandbox Code Playgroud)
代替
http://proxy server url/service...
Run Code Online (Sandbox Code Playgroud)
我想我需要对一些项目做一些澄清......
这个端点地址重要吗?如果端点地址与他们将调用以调用服务的代理服务器的URL不匹配,客户端是否仍然能够运行.这基本上问了" WSDL到Web服务,因为接口是对象 ".
更新:在回答第一个问题时,它确实看起来" 作为接口的Web服务的WSDL是对象 ".WSDL中指定的端点地址并不重要.事实上,在不同于WSDL中指定的端点上调用Web服务操作是相对简单的,如此处所述.
// Create service and proxy from the generated Service class. HelloService service = new HelloService(); HelloPort proxy = service.getHelloPort();// Override the endpoint address ((BindingProvider)proxy).getRequestContext().put( BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://new/endpointaddress"); proxy.sayHello("Hello World!");
当我们部署到Glassfish时,会自动生成WSDL.有没有一种简单的方法可以通过应用服务器设置覆盖Glassfish中生成的端点地址.如果是这样,我可以创建一个设置来自动将代理服务器URL放入生成的WSDL中.
如果1确实很重要,我们不能以2的方式覆盖它,那么它基本上意味着我们需要为开发和生产做单独的构建.这并不"感觉正确",因为在我看来,部署到另一台服务器时我们唯一需要做的就是将现有(和经过测试)的战争从一个环境中丢弃到新服务器上.
事实证明,部署服务Server Name的HTTP Listener位置有一个参数.您可以从Glassfish管理控制台指定此值,Glassfish将使用此名称而不是请求URL中的主机名.
遗憾的是,如果您的应用服务器和代理服务器不使用相同的服务器(我们不使用),则此参数将不允许您覆盖端口或协议(http到https).
我所做的是为我的服务编写一个简单的servlet过滤器来处理这个问题.
| 归档时间: |
|
| 查看次数: |
5391 次 |
| 最近记录: |