我正在尝试使用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上运行,并且我的日志正常流动。任何想法??
答案 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的答案是不正确的。
此致 斯特芬