【问题标题】:Deploy Axis 2 in Tomcat and access your web service in a custom path在 Tomcat 中部署 Axis 2 并在自定义路径中访问您的 Web 服务
【发布时间】:2018-07-31 01:49:02
【问题描述】:

我在 Tomcat 中部署了一个基于 Axis2 的 Web 服务。首先我下载了​​ axis2.war 并将其放在 Tomcat 的 webapps 文件夹中。它创建了 axis2 文件夹及其子文件夹。在 Axis2 的 WEB-INF 子文件夹中,在services 子文件夹中我放置我的.aar 文件。然后在我的浏览器中我转到http://localhost:8080/axis2。它有一个链接服务,列出了所有的服务。假设我的服务是 HelloWorldService。所以它可以访问的路径是

http://localhost:8080/axis2/services/HelloWorldService

但我不想向世界透露我的 Web 服务是由 Axis2 驱动的。假设我希望路径是

http://localhost:8080/abc/services/HelloWorldService

如何做到这一点?我是否必须将axis2 文件夹重命名为abc。我还有一个 Web 应用程序 abc 部署在同一个 Tomcat 中。我是否将axis2 子文件夹的内容复制到abc。我试过了,没用。

【问题讨论】:

    标签: web-services soap axis2


    【解决方案1】:

    我还有一个 Web 应用程序 abc 部署在同一个 Tomcat 中。我是否将axis2子文件夹的内容复制到abc。

    您的想法是正确的,是的,您必须将 Axis2.war 的所有内容(不需要 100%,但最好从一开始就这样做)复制到 abc,web.xml 除外。

    您必须将axis2.war/WEB-INF/web.xml 内容与abc/WEB-INF/web.xml 合并,方法是将以下内容分别复制到<web-app> XML 标记内。

        <servlet>
            <display-name>Apache-Axis Servlet</display-name>
            <servlet-name>AxisServlet</servlet-name>
            <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
            <!--<init-param>-->
            <!--<param-name>axis2.xml.path</param-name>-->
            <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
            <!--<param-name>axis2.xml.url</param-name>-->
            <!--<param-value>http://localhost/myrepo/axis2.xml</param-value>-->
            <!--<param-name>axis2.repository.path</param-name>-->
            <!--<param-value>/WEB-INF</param-value>-->
            <!--<param-name>axis2.repository.url</param-name>-->
            <!--<param-value>http://localhost/myrepo</param-value>-->
            <!--</init-param>-->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet>
            <display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name>
            <servlet-name>AxisAdminServlet</servlet-name>
            <servlet-class>org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
        </servlet>
    
    
    
    <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>/servlet/AxisServlet</url-pattern>
        </servlet-mapping>
    
        <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>*.jws</url-pattern>
        </servlet-mapping>
    
        <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>/services/*</url-pattern>
        </servlet-mapping>
    
        <servlet-mapping>
            <servlet-name>AxisAdminServlet</servlet-name>
            <url-pattern>/axis2-admin/*</url-pattern>
        </servlet-mapping>
    

    希望它对你有用!如果它不起作用,请更新您的问题,我可以重新调整答案。

    【讨论】:

    • 我发现我的思路是正确的,问题出在其他地方 - 在与 Axis 无关的 Web 应用程序的初始化部分。对于 Axis 部分,使用 axis2-aar-maven-plugin 来创建所需的结构(WEB-INF 下的 services 文件夹并将 aar 文件放在那里)。
    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    相关资源
    最近更新 更多