Java 使用Maven、Jersey和Tomcat 8运行Intellij的REST服务
我正在尝试使用Ubuntu 16.04、Oracle Java 8、带Maven的Intellij、Jersey和Tomcat 8运行REST服务的示例。我正在学习可以在这里找到的教程。示例是使用Tomcat7,而我使用的是Tomcat8。当我运行发送给Java 使用Maven、Jersey和Tomcat 8运行Intellij的REST服务,java,rest,maven,tomcat,intellij-idea,Java,Rest,Maven,Tomcat,Intellij Idea,我正在尝试使用Ubuntu 16.04、Oracle Java 8、带Maven的Intellij、Jersey和Tomcat 8运行REST服务的示例。我正在学习可以在这里找到的教程。示例是使用Tomcat7,而我使用的是Tomcat8。当我运行发送给http://localhost:8080/(但我认为应该是http://localhost:8080/hello我试过了,它给了我一个404同样)我没有收到Intellij的任何警告,但我得到了 HTTP Status 404-键入状态报告消息
http://localhost:8080/
(但我认为应该是http://localhost:8080/hello
我试过了,它给了我一个404
同样)我没有收到Intellij的任何警告,但我得到了
HTTP Status 404-键入状态报告消息说明请求的资源不可用。网络浏览器中的Apache Tomcat/8.0.32(Ubuntu)
。从命令行启动Tomcat服务器工作正常,并向我发出欢迎消息。我在stackoverflow上找到了所有类似的问题,但是我没有解决这个问题。我将非常乐意为任何关于我的代码有什么问题的建议
我的代码如下
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<servlet>
<servlet-name>Example API</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.example.jersey</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Example API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Intellij的输出
/usr/share/tomcat8/bin/catalina.sh run
[2016-07-10 08:17:15,670] Artifact RESTServer:war exploded: Server is not connected. Deploy is not available.
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/8.0.32 (Ubuntu)
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Jul 6 2016 11:49:29 UTC
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 8.0.32.0
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Linux
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 4.4.0-28-generic
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: /usr/lib/jvm/java-8-oracle/jre
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_91-b14
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: /home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: /usr/share/tomcat8
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=/home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2/conf/logging.properties
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote=
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote.port=1099
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote.ssl=false
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote.authenticate=false
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.rmi.server.hostname=127.0.0.1
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/usr/share/tomcat8
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=/home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2/temp
Jul 10, 2016 8:17:17 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Jul 10, 2016 8:17:17 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1586 ms
Jul 10, 2016 8:17:18 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jul 10, 2016 8:17:18 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.32 (Ubuntu)
Jul 10, 2016 8:17:18 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Jul 10, 2016 8:17:18 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 188 ms
Connected to server
[2016-07-10 08:17:18,307] Artifact RESTServer:war exploded: Artifact is being deployed, please wait...
Jul 10, 2016 8:17:19 AM org.apache.jasper.servlet.TldScanner scanJars
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.
[2016-07-10 08:17:19,467] Artifact RESTServer:war exploded: Artifact is deployed successfully
[2016-07-10 08:17:19,468] Artifact RESTServer:war exploded: Deploy took 1,161 milliseconds
我设法让它工作起来了。主要的问题是示例使用的Servlet版本和Jersey版本的差异,以及我能够使用的内容。示例是使用Servlet3.0,而我使用的是3.1。我可能错了,但我认为Servlet3.1迫使我使用Jersey 2。这两个差异意味着
web.xml
和pom.xml
文件需要反映这些更改。我已经在下面发布了更新的web.xml
和pom.xml
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>Example API</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Example API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
web.xml
Web应用程序创建的原型
示例API
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
泽西岛
1.
示例API
/*
-
pom.xml
4.0.0
泽西岛
堆栈
战争
0.0.1-快照
http://maven.apache.org
javax.servlet
javax.servlet-api
3.1.0
假如
org.glassfish.jersey.containers
jersey容器servlet核心
2.13
org.glassfish.jersey.containers
jersey容器servlet
2.13
堆栈
org.apache.maven.plugins
maven战争插件
2.5
org.apache.maven.plugins
maven编译器插件
3.2
1.8
1.8
堆栈
您的应用程序应位于/RESTServer下。由于资源位于/hello下,在这个应用程序中,URL应为/RESTServer/hello@JBNizet我试过http://localhost:8080/RESTServer/hello
但我仍然得到了404
。希望您的类包com.example.jersey位于文件夹结构RESTServer/src/main/java?@Sampada是的,我的文件夹结构仍然是RESTServer/src/main/java/com.example.jersey/HelloWorld.javaI不能让它工作。是否有日志解释导致请求的资源不可用的HTTP Status 404类型状态报告消息描述的原因。Apache Tomcat/8.0.32(Ubuntu)?比如什么资源是不可用的。
/usr/share/tomcat8/bin/catalina.sh run
[2016-07-10 08:17:15,670] Artifact RESTServer:war exploded: Server is not connected. Deploy is not available.
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/8.0.32 (Ubuntu)
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Jul 6 2016 11:49:29 UTC
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 8.0.32.0
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Linux
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 4.4.0-28-generic
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: /usr/lib/jvm/java-8-oracle/jre
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_91-b14
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: /home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: /usr/share/tomcat8
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=/home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2/conf/logging.properties
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote=
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote.port=1099
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote.ssl=false
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcom.sun.management.jmxremote.authenticate=false
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.rmi.server.hostname=127.0.0.1
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/usr/share/tomcat8
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=/home/mikael/.IntelliJIdea2016.1/system/tomcat/Unnamed_RESTServer_2/temp
Jul 10, 2016 8:17:17 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Jul 10, 2016 8:17:17 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Jul 10, 2016 8:17:17 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1586 ms
Jul 10, 2016 8:17:18 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jul 10, 2016 8:17:18 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.32 (Ubuntu)
Jul 10, 2016 8:17:18 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Jul 10, 2016 8:17:18 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 188 ms
Connected to server
[2016-07-10 08:17:18,307] Artifact RESTServer:war exploded: Artifact is being deployed, please wait...
Jul 10, 2016 8:17:19 AM org.apache.jasper.servlet.TldScanner scanJars
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.
[2016-07-10 08:17:19,467] Artifact RESTServer:war exploded: Artifact is deployed successfully
[2016-07-10 08:17:19,468] Artifact RESTServer:war exploded: Deploy took 1,161 milliseconds
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>Example API</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Example API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.jersey</groupId>
<artifactId>stack</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.13</version>
</dependency>
</dependencies>
<build>
<finalName>stack</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<name>Stack</name>
</project>