在没有 servicePath 的情况下更改 Axis2 上的 WS 端点

发布于 2024-09-26 11:17:15 字数 827 浏览 6 评论 0原文

我使用 Axis2 1.4 和 glassfish 2.1.1 开发了一个 WS,它可以使用端点 url 正确运行,

 `http://server:port/appname/services/FooService`  

但我需要让它通过端点工作,

 `http://server:port/FooService`  

因为 WS 客户端无法更改为使用不同的端点。

摆脱“appname”部分很容易,将应用程序名称设置为应用程序服务器下的 root(更改应用程序的 application.xml 配置文件)。这会导致像 http://server:port/services/FooService 这样的端点,它工作正常,但仍然有“服务”部分。

为了摆脱“服务”部分,我尝试:

  • 更改了 axis2.xml 配置文件上的“servicePath”属性。如果我将此属性设置为空白、null、“”或“/”则不起作用。在前两种情况下,部署应用程序时会引发“servicePath 不能为 null 或为空”异常。

  • 在 web.xml 文件中添加了一个新条目,以将 AxisServlet 映射到 url 模式“/”,但同样不起作用。

所以,我的问题是:有什么方法可以摆脱 servicePath 参数吗?

假设没有办法这样做,另一种想法是将请求从我尝试使用的端点 URL“重定向”到 axis2 使用的端点 URL(使用 servicePath)。我不知道如何做到这一点,也许使用 servlet?应用程序服务器上的一些配置?

I've developed an WS using Axis2 1.4 and glassfish 2.1.1, which is properly running using the endpoint url like

 `http://server:port/appname/services/FooService`  

but I need to get it working through an endpoint like

 `http://server:port/FooService`  

since the WS clients can't be changed to use a different endpoint.

Getting rid of the "appname" part was easy, setting the appname to root under the application server (changing the application.xml configuration file for the application). This leads to an endpoint like http://server:port/services/FooService which works fine but still has the "services" part on it.

To get rid of the "services" part, i tried:

  • Changed the "servicePath" property on the axis2.xml configuration file. If I set this property to blank, null, "" or "/" does not work. On the first two cases a "servicePath can't be null or empty" exception is thrown while deploying the application.

  • Added a new entry on the web.xml file to map the AxisServlet to the url pattern "/", but again it does not work.

So, my question is: Is there any way to get rid of the servicePath parameter?

Supposing there is no way for doing so, another idea is to "redirect" requests from the endpoint url i'm trying to use to the one that axis2 uses (with the servicePath). I'm not sure how to do this, maybe with a servlet? some configuration on the application server?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北方的巷 2024-10-03 11:17:15

如果您以 ROOT 身​​份部署应用程序,只需将 servlet 映射放入 web.xml 中:

<servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/FooService/*</url-pattern>
</servlet-mapping>

If you deployed an application as ROOT just put servlet mapping in web.xml :

<servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/FooService/*</url-pattern>
</servlet-mapping>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文