简体   繁体   English

error404使用jersey框架和tomcat服务器访问Restful Web服务

[英]error404 accessing Restful web service using jersey framework and tomcat server

Am facing a problem accessing a Restful web service via this url: localhost:8080/PrimNumbers/Generator/strategy 通过以下URL访问Restful Web服务时遇到问题: localhost:8080/PrimNumbers/Generator/strategy

I got this error: 我收到此错误:

HTTP Status 404 - /PrimNumbers/Generator/strategy HTTP状态404-/ PrimNumbers / Generator / strategy

type Status report 类型状态报告

message /PrimNumbers/Generator/strategy 消息/ PrimNumbers / Generator / strategy

description The requested resource is not available. 描述所请求的资源不可用。

Am using tomcat7.0.81 server and jersey1.17 framework (i have included the jersey jar file under WEB-INF/lib in my project). 我正在使用tomcat7.0.81服务器和jersey1.17框架(我的项目中WEB-INF / lib下包含了jersey jar文件)。 here is my web.xml file: 这是我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<element>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
version="3.0">
  <display-name>PrimNumbers</display-name>
   <servlet> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
      <init-param> 
         <param-name> jersey.config.server.provider.packages</param-name> 
         <param-value>PrimeNbs</param-value> 
      </init-param> 
   </servlet> 
   <servlet-mapping> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <url-pattern>/*</url-pattern> 
   </servlet-mapping>   
</web-app>
</element

> >

and this is my service.java(am just testing the service): 这是我的service.java(正在测试服务):

package PrimeNbs;

import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;


//annotations
@Path("/Generator")

public class PrimeNbsGeneratorService {

    @GET
    @Path("/strategy")
    @Produces(MediaType.TEXT_HTML)  
    public String Strategy1(){
        boolean prime=true;
        String rslt="<HTML><h1> Prime numbers: ";
        return(rslt+" test...</h1></HTML>");
    }
}

while running my server I got these log msgs: 在运行服务器时,我得到了以下日志消息:

> ug 22, 2017 11:22:44 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:PrimNumbers' did not find a matching property.
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/7.0.81
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Aug 11 2017 10:21:27 UTC
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         7.0.81.0
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Linux
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            4.4.0-21-generic
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             /home/elhem/java/jre1.8.0_121
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.8.0_121-b13
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         /home/elhem/workspace/tomcat
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         /home/elhem/workspace/tomcat
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/home/elhem/workspace/tomcat
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/home/elhem/workspace/tomcat
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=/home/elhem/workspace/tomcat/wtpwebapps
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=/home/elhem/workspace/tomcat/endorsed
Aug 22, 2017 11:22:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=UTF-8
Aug 22, 2017 11:22:44 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Aug 22, 2017 11:22:45 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Aug 22, 2017 11:22:45 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Aug 22, 2017 11:22:45 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 865 ms
Aug 22, 2017 11:22:45 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Aug 22, 2017 11:22:45 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.81
Aug 22, 2017 11:22:45 AM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Aug 22, 2017 11:22:45 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/elhem/workspace/tomcat/webapps/host-manager
Aug 22, 2017 11:22:45 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/elhem/workspace/tomcat/webapps/host-manager has finished in 74 ms
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/elhem/workspace/tomcat/webapps/manager
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/elhem/workspace/tomcat/webapps/manager has finished in 67 ms
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/elhem/workspace/tomcat/webapps/ROOT
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/elhem/workspace/tomcat/webapps/ROOT has finished in 61 ms
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/elhem/workspace/tomcat/webapps/docs
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/elhem/workspace/tomcat/webapps/docs has finished in 60 ms
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/elhem/workspace/tomcat/webapps/examples
Aug 22, 2017 11:22:46 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Aug 22, 2017 11:22:46 AM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Aug 22, 2017 11:22:46 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@51542878')
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/elhem/workspace/tomcat/webapps/examples has finished in 231 ms
Aug 22, 2017 11:22:46 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Aug 22, 2017 11:22:46 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Aug 22, 2017 11:22:46 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1397 ms

Can anyone help! 谁能帮忙! I will be so appreciating. 我会很感激。

You have a problem with your web.xml. 您的web.xml有问题。

You now create a servlet with the name Jersey RESTful Application and a mapping for a servlet with the name PrimNumbers . 现在,您将创建一个名为Jersey RESTful Application的servlet和一个名为PrimNumbers的servlet的映射。 But the servler PrimNumbers does not exists. 但是服务者PrimNumbers不存在。

So what you need to do is make the servletand servlet-mapping use the same name. 因此,您需要做的是使servlet和servlet映射使用相同的名称。

Like this: 像这样:

  <servlet> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
      <init-param> 
         <param-name> jersey.config.server.provider.packages</param-name> 
         <param-value>PrimeNbs</param-value> 
      </init-param> 
  </servlet> 
  <servlet-mapping> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <url-pattern>/*</url-pattern> 
  </servlet-mapping>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM