当前位置: 首页 > 知识库问答 >
问题:

在Tomcat上部署WebService:WS不可用:404错误

乐正玺
2023-03-14

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

在这个问题上,我简直不知所措:(我有一个简单的helloworld Web服务,构建WAR文件并将其部署在本地主机上的tomcat(8.0.35)上。明确地说:我刚刚写了一个类,用@WebService注释;然后我写了网络。xml和sun jaxws。xml;我什么都没做!这足以让该类成为Web服务吗?我是否错过了另一步?

问题:网址:localhost:8080/endpointname/url-pattern没有显示我的网络服务的定义,因为它在我跟随编写服务的链接中意味着:http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/.我只得到一个胖的404 Eror。这是我的构建文件:

<?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>

这是我的太阳。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状态404- /HalloAPI/sayhello”?发布方面有什么问题或遗漏吗?我的意思是,如果我使用glassfish服务器,它会部署并向我显示测试器和wsdl。但是在tomcat上部署...我得到404。

这是我的网站。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>

Happy I:我将所需的jaxws JAR移到了web inf/lib中。现在Tomcat不会在部署时抛出错误。但该服务仍然不可用。据我所知:tomcat/lib中的jaxws JAR混淆了类加载器。所以我把他们塞进了战争。下面是部署协议:

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提前感谢您的帮助。

共有1个答案

缪阎宝
2023-03-14

更改你的com。太阳xml。ws。运输http。Servlet。WSServlet到com。太阳xml。ws。运输http。servlet。WSServlet在你的网站上。xml

 类似资料:
  • 我尝试在独立的Tomcat7.0.91上部署Gradle+Spring Boot2+Angular2应用程序WAR文件。如果我用提供的jar和嵌入的tomcat引导应用程序,一切正常,但是当我在独立容器上部署时,当我转到“/springboot”上下文时,它给我404:“源服务器没有找到目标资源的当前表示,或者不愿意公开存在的表示。”来自tomcat的日志没有显示任何有用的信息。通过在server

  • 我一直试图在tomcat上部署一个简单的Web服务,但我没有成功,它总是返回我404错误。 我使用了这个例子中的代码 http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/ 但无法使用war,因为我在服务器中设置了上下文信息。xml 因此,我使用了与mkyong相同的代码,但在部署时遵循以下步骤:

  • 这真是令人难以置信的沮丧。 我已经部署了一个webapp在Eclipse/Tomcat中进行调试。我选择了“使用Tomcat安装”单选按钮来使用我自己的服务器。这都很好。但当我尝试访问我的web应用程序时,我得到一个404错误。我可以看到它已经部署在wptwebapps文件夹中。日志只显示404。我可以很好地访问manager应用程序,它显示我的web应用程序已经部署。 我做了清理/重新发布,重新

  • 首先,我研究了建议的类似问题——因为这显然是一个相当普遍的问题——但还没有找到答案。我哪里出错了?下载了最新的JAXWS-RI,手动复制了所有的. jar文件。然后拼凑了一个web.xml 还有sun-jaxws.xml 还有几个java文件 我将这四个文件放在适当的目录结构中,在eclipse中构建了一个war文件,并将其复制到Tomcat webapps文件夹中。战争爆发并显示在管理器控制台上

  • 我在Spring MVC中开发了一个应用程序,当我直接从eclipse通过run as->run On server运行它时,它工作得很好。 但是现在我想要将war部署到Tomcat文件夹并从那里运行它。我已经对此做了更改,war正在正确地部署到所需的tomcat文件夹中,但当我启动tomcat服务器并在浏览器中访问应用程序url时,它会给我404错误。服务器正在启动,没有任何异常。 下面是项目结

  • 问题内容: 我试图弄清楚如何设置Apache Tomcat服务器以为具有深层链接的角度应用程序提供服务。例如: 静态服务器在收到对mysite.com/的请求时,通常会返回index.html。但是它拒绝mysite.com/heroes/42并返回404-Not Found错误,除非将其配置为返回index.html。 我想在localhost / angular上提供angular应用,我尝试