gpt4 book ai didi

web-services - 在 Tomcat 上部署 WebService : WS not available: 404 Error

转载 作者:行者123 更新时间:2023-11-28 22:51:48 24 4
gpt4 key购买 nike

这是我在 stackoverflow 中的第一个问题!哇:)

我在这个问题上失去了我的头发:(我有一个简单的 helloworld-Web 服务,构建 warfile 并将其部署在本地主机的 tomcat (8.0.35) 上。明确一点:我刚刚写了一个类,用@WebService 注释;然后我写了web.xml和sun-jaxws.xml;我没有做任何其他事情!这足以让该类成为 Web 服务吗?我会错过另一个步骤吗?

问题:url: localhost:8080/endpointname/url-pattern 没有向我显示我的 Web 服务的定义,因为它在我编写服务所遵循的链接中意味着:http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/ .我刚得到一个胖 404 错误。这是我的构建文件:

<?xml version="1.0" encoding="UTF-8"?>
<project name="test_WS" default="deploy" basedir=".">
<property name="project-name" value="${ant.project.name}" />
<property name="war-file-name" value="${project-name}.war" />
<property name="source-directory" value="src" />
<property name="web-directory" value="WebContent" />
<property name="webinf.dir" value="${web-directory}/WEB-INF" />
<property name="web-xml-file" value="${webinf.dir}/web.xml" />
<property name="build-directory" value="build" />
<property name="shared.deploy.dir" value="C:/1_Entwicklung/datarocket/tomcat-webapps" />
<property name="local.deploy.dir" value="C:/1_Entwicklung/apache-tomcat-8.0.35/webapps" />

<tstamp prefix="build-info">
<format property="current-date" pattern="dd-MM-yyyy" locale="de" />
<format property="current-time" pattern="hh:mm:ss a z" locale="de" />
</tstamp>

<!-- Classpath -->
<path id="build.classpath">
<!-- Jax WS related -->
<fileset dir="${webinf.dir}/lib/" casesensitive="yes">
<include name="*.jar"/>
</fileset>
</path>

<target name="init">
<mkdir dir="${webinf.dir}/classes" />
<mkdir dir="${build-directory}/classes" />
</target>

<!-- deploy -->
<target name="deploy" depends="war">
<copy file="${build-directory}/${war-file-name}" todir="${local.deploy.dir}" />
<copy file="${build-directory}/${war-file-name}" todir="${shared.deploy.dir}" />
</target>

<!-- war -->
<target name="war" depends="build">
<war warfile="${build-directory}/${war-file-name}" webxml="${web-xml-file}">
<classes dir="${build-directory}/classes" />
<fileset dir="${web-directory}">
<!-- exclude webxml as it is attribute of the war tag -->
<exclude name="WEB-INF/web.xml" />
</fileset>
<manifest>
<attribute name="Built-On" value="${build-info.current-date}" />
<attribute name="Built-At" value="${build-info.current-time}" />
</manifest>
</war>
</target>

<target name="build" depends="clean">
<javac includeantruntime="false" srcdir="${source-directory}" destdir="${build-directory}/classes">
</javac>
</target>


<!-- clean -->
<target name="clean" description="Prepare for clean build">
<delete dir="${webinf.dir}/classes" />
<delete dir="${build-directory}" />
<mkdir dir="${build-directory}" />
<mkdir dir="${build-directory}/classes" />
</target>
</project>

这是我的 sun-jaxws.xml:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint
name="HalloAPI"
implementation="saab.javabeans.Hallo"
url-pattern="/sayhello" >
</endpoint>
</endpoints>

这是 API:

@WebService
public interface HalloAPI {
String sayHello(String name);
}

为什么 tomcat 会说:“HTTP Status 404 -/HalloAPI/sayhello”?关于发布的错误或遗漏?我的意思是,如果我使用 glassfish-server,它会部署并向我展示测试器和 wsdl。但是在 tomcat 上部署...我得到 404。

这是我的 web.xml:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>test_WS</display-name>
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>webservicesServlet</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>webservicesServlet</servlet-name>
<url-pattern>/sayhello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
</web-app>

我很高兴:我将所需的 jaxws jar 移到了 web-inf/lib 中。现在 Tomcat 不会在部署时抛出错误。但服务瓶 url 仍然不可用。我所知道的:tomcat/lib 中的 jaxws-jars 混淆了类加载器。所以我把他们塞进了 war 。现在是部署协议(protocol):

07-Jun-2016 15:34:54.149 INFO [localhost-startStop-2] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive C:\1_Entwicklung\apache-tomcat-8.0.35\webapps\test_WS.war
07-Jun-2016 15:34:55.371 INFO [localhost-startStop-2] com.sun.xml.ws.transport.http.servlet.WSServletDelegate.<init> WSSERVLET14: Initialisierung von JAX-WS-Servlet
07-Jun-2016 15:34:55.372 INFO [localhost-startStop-2] com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized WSSERVLET12: Initialisierung von JAX-WS-Kontext-Listener
07-Jun-2016 15:34:55.373 INFO [localhost-startStop-2] com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized WSSERVLET12: Initialisierung von JAX-WS-Kontext-Listener
07-Jun-2016 15:34:55.385 INFO [localhost-startStop-2] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive C:\1_Entwicklung\apache-tomcat-8.0.35\webapps\test_WS.war has finished in 1,236 ms

问题依然存在:服务不可用;状态:404在此先感谢您的帮助。

最佳答案

将您的 com.sun.xml.ws.transport.http.Servlet.WSServlet 更改为web.xml 中的 com.sun.xml.ws.transport.http.servlet.WSServlet

关于web-services - 在 Tomcat 上部署 WebService : WS not available: 404 Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com