使用Maven在Tomcat上生成和访问WSDL

时间:2018-04-02 04:51:00

标签: java maven tomcat wsdl jax-ws

我有一个JAX-WS服务器,我与Maven打包并在Tomcat上部署。 pom.xml使用来自Use Maven to trigger a wsgen & wsimport in a row, using wsdlLocation的技巧自动生成WSDL文件。我只使用第一部分,即:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>generate-wsdl</id>
            <phase>process-classes</phase>
            <goals>
                <goal>wsgen</goal>
            </goals>
            <configuration>
                <sei>packageName.endpointName</sei>
                <genWsdl>true</genWsdl>
            </configuration>
        </execution>
    </executions>
</plugin>

这是生成的WSDL:

<wsp:Policy wsu:Id="NAMEServerPortBinding_MTOM_Policy">
    <ns1:OptimizedMimeSerialization wsp:Optional="true" xmlns:ns1="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization"/>
</wsp:Policy>
<types>
    <xsd:schema>
        <xsd:import namespace="http://PACKAGE/" schemaLocation="SERVER_schema1.xsd"/>
    </xsd:schema>
</types>
<etc...>
<service name="NAME">
    <port name="NAMEPort" binding="tns:NAMEPortBinding">
        <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
    </port>
</service>
</definitions>

我的web.xml:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">
    <listener>
        <listener-class>
            com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
    </listener>
    <servlet>
        <servlet-name>serverName</servlet-name>
        <servlet-class>
            com.sun.xml.ws.transport.http.servlet.WSServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>serverName</servlet-name>
        <url-pattern>/serverName/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>
</web-app>

我的sun-jaxws.xml:

<endpoints version="2.0"
    xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
    <endpoint implementation="package.ServerEndpoint" name="serverName"
        url-pattern="/serverLink"/>
</endpoints>

我确保Tomcat确实部署并启动了Web服务器,我已经检查过WSDL确实在Tomcat中的服务器内,但是我无法弄清楚如何访问它以便我可以继续完成客户端和测试整个事情。我已经查看了十几个教程,其中大多数似乎都达到了这一点然后说&#34;这里发生了一些魔术,你打开一个浏览器,这就出现了:&#34;

https://www.java2blog.com/wp-content/uploads/2013/03/WebserviceOutput.gif

使用的图像总是一样的,事实上我在使用Glassfish时已经看到了这一点,但我不能为我的生活弄清楚我必须做些什么才能在Tomcat上实现它。链接http://localhost:8080/server-1.0/serverName/serverLinkhttp://localhost:8080/server-1.0/serverName都会返回&#34; 404 Not Found:Invalid Request&#34;。将?wsdl附加到任何一个都不会改变结果。 accessing wsdl on Tomcat的答案建议安装Metro,我做了,但遗憾的是无济于事。

显示所有显示的代码并更改了变量名称。如果需要更多信息,我将很乐意提供。

0 个答案:

没有答案