首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STS tcServer - Restful风格的web服务配置

STS tcServer - Restful风格的web服务配置
EN

Stack Overflow用户
提问于 2013-01-14 10:01:22
回答 1查看 1.1K关注 0票数 0

我正在尝试创建一个hello world restful(jersey) world服务。我使用的是Spring工具套件和原生的vFabric tcServer。

下面是URL : /localhost:8080/example/rest/hello,它给出了404。

我已经确保所有的jars都在集成开发环境中的WEB-INF/lib文件夹中。

我阅读了各种论坛,其中提到所有的jars都应该存在于WEB-INF目录中。我已经通过了同一主题的各种SO问题,但我仍然无法解决这个错误的原因。

我是否需要专门导航到工作区中的tcServer installation来添加这些jars?有什么想法吗?

在启动tcServer时,我遇到了以下错误:

代码语言:javascript
复制
Jan 13, 2013 7:19:23 PM org.apache.catalina.core.ApplicationContext log

INFO: Marking servlet jersey as unavailable
Jan 13, 2013 7:19:23 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet  threw load() exception
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)

以下是web.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
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>example</display-name>
  <servlet>
    <servlet-name>jersey</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.service</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

和相应的webservice类:

代码语言:javascript
复制
package com.example.service;

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

@Path("/hello")
public class HelloWorldService {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello() {
        return "whats up";
    }

    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayHelloXmlVersion() {
        return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
    }

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String sayHelloHTMLVersion() {
        return "<html> " + "<title>" + "Hello Jersey" + "</title>"
                + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
    }
}

项目中所有jar文件的列表:

代码语言:javascript
复制
asm-3.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-client-1.16.jar
jersey-core-1.16.jar
jersey-json-1.16.jar
jersey-server-1.16.jar
jersey-servlet-1.16.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar
jsr311-api-1.1.1-javadoc.jar
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 00:27:18

修好了。Had必须在web.xml中引用web项目名称:

代码语言:javascript
复制
  .....
 <display-name>SampleWebService</display-name>
  .......

和相应的url:

代码语言:javascript
复制
/localhost:8080/SampleWebService/rest/hello
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14310496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档