Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RESTWeb服务404错误-Tomcat Eclipse_Java_Eclipse_Web Services_Rest_Tomcat - Fatal编程技术网

Java RESTWeb服务404错误-Tomcat Eclipse

Java RESTWeb服务404错误-Tomcat Eclipse,java,eclipse,web-services,rest,tomcat,Java,Eclipse,Web Services,Rest,Tomcat,这是我第一次使用Web服务,这让我抓狂 我正在学习:-第6节的教程 我创建了项目名称example.restservice.blue,其中有一个包example.restservice.blue,其中有一个类Hey: package example.restservice.blue; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Med

这是我第一次使用Web服务,这让我抓狂

我正在学习:-第6节的教程

我创建了项目名称example.restservice.blue,其中有一个包example.restservice.blue,其中有一个类Hey:

package example.restservice.blue;


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

// Plain old Java Object it does not extend as class or implements 
// an interface

// The class registers its methods for the HTTP GET request using the @GET annotation. 
// Using the @Produces annotation, it defines that it can deliver several MIME types,
// text, XML and HTML. 

// The browser requests per default the HTML MIME type.

//Sets the path to base URL + /hello
@Path("/Hey")
public class Hey {

// This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello Jersey, please please work";
}

 // This method is called if XML is request
 @GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey, please please work" + "</hello>";
}

// This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Hello Jersey, please please work" + "</title>"
    + "<body><h1>" + "Hello Jersey, please please work" + "</body></h1>" + "</html> ";
}

}

您的配置似乎很好,但您没有访问浏览器中的正确页面:如果您在教程中注意到,它将访问/rest/hello页面,而不是WEB-INF/classes/hello.java

在Java(或J2EE)中,您永远不会访问Java类:您将访问映射到Java控制器(或web服务)的页面

所以,要从浏览器访问您的web服务,请将您的URL更正为类似
http://localhost:8080/example.restservice.blue/rest/Hey

(对于带有注释@Path(“/Hey”)的web服务)

在成功部署使用JAX-RS开发的web服务RESTful之前,必须为应用程序配置REST资源路径。有两种方法可以做到这一点:

  • 使用web.xml部署描述符的步骤
  • 开发一个扩展
    javax.ws.rs.core.Application
    的类,并指定注释
    @ApplicationPath
使用部署描述符的示例

web服务的类别:

package example.restservice.blue;

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

@Path("Hey")
public class Hey {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayPlainTextHello() {
        return "Hello Jersey, please please work";
    }

    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + 
           "<hello> Hello Jersey, please please work" + "</hello>";
    }
}
您可以使用包扫描。正如网站上提到的

参数
com.sun.jersey.config.property.package
定义了 包Jersey将查找web服务类。此属性 必须指向您的资源类。URL模式定义部件 您的应用程序将被放置的基本URL的

在您的情况下,需要在路径注释中指定正确的URI并发出正确的请求

另见:


您好,谢谢您的回答!我只是在服务器上运行java文件(rt.单击Hey.java->runas->runonserver)。我也尝试过同样的方法,即在服务器上运行web.xml,甚至在服务器上运行整个项目。每次URL都明确包含我正在运行的内容的路径,但给出相同的404错误。请告诉我如何运行它以获得您指定的URL。我试着输入您指定的URL(在Tomcat上运行项目后),但仍然没有成功。我没有使用右键单击->运行方式。。。但是你的URL总是这样的:其中你的服务器名是“localhost”,你的服务器端口是“8080”,你的项目名来自server.xml文件(在tomcat文件夹中:上下文标记的path属性),你的路径由web.xml中定义的URL模式和@path注释中定义的名称组成,我也试过了,我仍然会遇到同样的错误,我认为你的问题中唯一没有描述的部分是“yourpath”URL部分的开头。因此,单击服务器并检查模块选项卡:您将看到一行路径。并尝试访问您的URL,因为在模块选项卡中找到的路径是-example.restservice.blue。所以我尝试了-local:8080/example.restservice.blue/example.restservice.blue/rest/Hey,并且出现了相同的错误。非常感谢您的回复!
Nov 07, 2014 5:34:37 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files (x86)\QuickTime\QTSystem\;.
Nov 07, 2014 5:34:38 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:example.restservice.bhagya' did not find a matching property.
Nov 07, 2014 5:34:38 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Nov 07, 2014 5:34:38 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Nov 07, 2014 5:34:38 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1608 ms
Nov 07, 2014 5:34:38 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Nov 07, 2014 5:34:38 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
Nov 07, 2014 5:34:38 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Users\vaio\Desktop\RESTProject\wtpwebapps\example.restservice.blue\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Nov 07, 2014 5:34:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Users\vaio\Desktop\RESTProject\webapps\docs
Nov 07, 2014 5:34:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Users\vaio\Desktop\RESTProject\webapps\examples
Nov 07, 2014 5:34:42 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Nov 07, 2014 5:34:42 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Nov 07, 2014 5:34:42 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@53d4287')
Nov 07, 2014 5:34:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Users\vaio\Desktop\RESTProject\webapps\host-manager
Nov 07, 2014 5:34:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Users\vaio\Desktop\RESTProject\webapps\manager
Nov 07, 2014 5:34:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Users\vaio\Desktop\RESTProject\webapps\ROOT
Nov 07, 2014 5:34:42 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Nov 07, 2014 5:34:42 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Nov 07, 2014 5:34:42 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4642 ms
package example.restservice.blue;

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

@Path("Hey")
public class Hey {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayPlainTextHello() {
        return "Hello Jersey, please please work";
    }

    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + 
           "<hello> Hello Jersey, please please work" + "</hello>";
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web- app_3_0.xsd" 
  id="WebApp_ID" 
  version="3.0">

<display-name>example.restservice.blue</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>JerseyService</servlet-name>
    <servlet-class>
       com.sun.jersey.spi.container.servlet.ServletContainer
    </servlet-class>

  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>JerseyService</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

</web-app>
http://localhost:8080/root_context_here/rest/Hey