无法使Resteasy与Tomcat 8和Java 8一起使用

时间:2015-06-12 01:45:25

标签: java rest tomcat resteasy

我正在尝试使用JAVA 8(v45)和tomcat 8(v23)创建一个简单的基于resteasy的API,但是我没有看到我的调用导致任何流量或日志活动。

我的web.xml看起来像这样

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
    version="3.0">

  <display-name>Test</display-name>

    <description>Test</description>

    <servlet>
        <servlet-name>resteasy</servlet-name>
        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>resteasy</servlet-name>
        <url-pattern>/restfulservices/*</url-pattern>
    </servlet-mapping>

    <!-- Auto scan REST service -->
    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>

    <!-- this should be the same URL pattern as the servlet-mapping property -->

    <context-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/restfulservices</param-value>
    </context-param>

    <listener>
        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
    </listener>

    <resource-ref>
        <description>Oracle Datasource example</description>
        <res-ref-name>jdbc/cboxDs</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

    <!-- Environment entry examples -->
    <env-entry>
      <env-entry-name>test</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>dev</env-entry-value>
    </env-entry>
  </web-app> 

我的服务类看起来像这样:

package test.request.service;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

import org.apache.log4j.Logger;

@Path("/dihService")
public class testService {

    private static final Logger LOGGER = Logger.getLogger(testService.class);

    @GET
    @Path("/hello")
    public Response getResponseMessage() {

        LOGGER.info(" Entered and param is :");
        return Response.status(200).entity(" Entered. Hello world").build();
    }
}

部署后,当我点击以下网址时:http://localhost:10120/resteasy/restfulservices/dihService/hello

我希望日志中有一些活动,但我没有看到任何内容。我已经验证我的服务器在端口10120上运行,并且我的日志正常流动。任何想法??

2 个答案:

答案 0 :(得分:0)

您的servlet配置映射到以/ restfulservices开头的URL,如下所述:

  <servlet-mapping>
        <servlet-name>resteasy</servlet-name>
        <url-pattern>/restfulservices/*</url-pattern>
    </servlet-mapping>

但您的实际Web服务类不使用该URL部分

@Path("/dihService")
public class testService {

因此无法找到。您需要将restfulservices添加到您的类映射路径中,如下所述:

@Path("/restfulservices /dihService")
public class testService {

答案 1 :(得分:0)

我有类似的问题。我发现在tomcat你总是有一条额外的路径(目前我不知道如何改变它)。检查tomcat管理器应用程序http://localhost:8080/manager/html/list,您将找到所需的路径以用于已部署的应用程序。然后你应该可以使用

http://localhost:8080/somepath/restfulservices/dihService/

顺便说一句,我使用与你一样的注释结构,所以Juned的答案是不正确的。

此致 斯特芬