我正在开发一种带有球衣和scala的简单休息服务,主要用于学习目的。我目前有以下配置
package org.michaelangelomanager.restservice.rest
import javax.ws.rs.GET
import javax.ws.rs.Path
import javax.ws.rs.Produces
import javax.ws.rs.core.MediaType
@Path("/drawing")
class DrawingResource {
@GET
@Produces(Array(MediaType.TEXT_PLAIN))
def someText() = {
"Some text"
}
}
我的web.xml看起来像这样
<display-name>org.michaelangelomanager.restservice</display-name>
<servlet>
<servlet-name>MichaelAngeloManager</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>org.michaelangelomanager.restservice.rest</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
<param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MichaelAngeloManager</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
然后,当我做一个mvn jetty:在控制台中运行时,我得到以下输出
[INFO] Starting jetty 6.1.26 ...
2012-02-06 14:46:26.149:INFO::jetty-6.1.26
2012-02-06 14:46:26.296:INFO::No Transaction manager found - if your webapp requires one, please configure one.
6 fevr. 2012 14:46:26 com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
org.michaelangelomanager.restservice.rest
6 fevr. 2012 14:46:26 com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class org.michaelangelomanager.restservice.rest.DrawingResource
6 fevr. 2012 14:46:26 com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
6 fevr. 2012 14:46:26 com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.11 12/09/2011 10:27 AM'
2012-02-06 14:46:27.206:INFO::Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
显然我的根被拾起了。但随后我打开浏览器前往http://localhost:8080/drawing,我得到了404。
我在这里缺少什么?我找到的每个例子都不需要更多。
答案 0 :(得分:0)
嗯,这一切都很麻烦,因为我真的不知道码头如何运行。请参阅,jetty maven插件在与工件ID对应的上下文应用程序下运行您的站点。
用简单语言表示的是,如果在你的pom.xml中,你有
<artifactId>myfabulousapp</artifactId>
您将使用http://localhost:8080/myfabulousapp访问您的应用,而不是像我之前所假设的那样访问http://localhost:8080。
为了防止这种情况,只需像这样配置插件
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<!-- THAT LINE -->
<contextPath>/</contextPath>
</configuration>
</plugin>
这将教会我只浏览文档