Java J2EE中的Restful服务配置不工作
我正在使用servlets3和jsp处理j2EE项目,并使用restful服务交付应用程序数据。因此,我使用以下依赖项在pom.xml中获取restful服务Java J2EE中的Restful服务配置不工作,java,rest,Java,Rest,我正在使用servlets3和jsp处理j2EE项目,并使用restful服务交付应用程序数据。因此,我使用以下依赖项在pom.xml中获取restful服务 <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>2.2.1.GA</version&g
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>2.2.0.GA</version>
</dependency>
MyCommonServices.Java的路径为/,这意味着什么都没有,可以通过localhost:8080/myapp/访问它。
@Path(value = "/mobapi")
public class MyAppServices {
@GET
@Path(value = "/app/{param}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/")
public class MyCommonServices {
@GET
@Path(value = "/app/{param}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/api")
public class MyAddonServices {
@GET
@Path(value = "/app/{param}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
Java的路径是/api,可以通过localhost:8080/myapp/api/访问它。
@Path(value = "/mobapi")
public class MyAppServices {
@GET
@Path(value = "/app/{param}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/")
public class MyCommonServices {
@GET
@Path(value = "/app/{param}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/api")
public class MyAddonServices {
@GET
@Path(value = "/app/{param}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
问题是我只能访问localhost:8080/myapp/app/6546
,没有问题
但是,我无法访问其他api,例如localhost:8080/myapp/api/app/6546
或localhost:8080/myapp/mobapi/app/6546
这里是否缺少其他配置,请找人帮忙
更新
我使用过滤器来处理映射请求,如localhost:8080/myApp/app/something
到localhost:8080/myApp/f/app/something
,如下所示
MyFilter.java
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
String path = ((HttpServletRequest) request).getServletPath();
boolean isGet = "GET".equals(((HttpServletRequest) request)
.getMethod());
String newPath = null;
((HttpServletRequest) request).getQueryString();
try {
((HttpServletRequest) request).getQueryString();
if (path.contains("api/")) {
newPath = "f"
+ path
+ "?"
+ ((HttpServletRequest) request)
.getQueryString();
}else {
newPath = "f"
+ path
+ "?"
+ ((HttpServletRequest) request)
.getQueryString();
}
} catch (Exception e) {
newPath = "f" + path;
}
request.getRequestDispatcher(newPath).forward(request, response);
return;
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
如果我删除此筛选器,我可以访问所有api,而不会出现问题,例如,localhost:8080/myApp/f/app/something
&localhost:8080/myApp/f/api/app/something&localhost:8080/myApp/f/mobapi/app/something
有人能帮上忙吗?试着这样做:
MyCommonServices.Java
@Path(value = "/app/{param}")
public class MyCommonServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/mobapi/app/{param}")
public class MyAppServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/api/app/{param}")
public class MyAddonServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
Java
@Path(value = "/app/{param}")
public class MyCommonServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/mobapi/app/{param}")
public class MyAppServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/api/app/{param}")
public class MyAddonServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
Java
@Path(value = "/app/{param}")
public class MyCommonServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/mobapi/app/{param}")
public class MyAppServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
@Path(value = "/api/app/{param}")
public class MyAddonServices {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@PathParam(value = "param") String appId) {
String token = documentDAO.mobileAppToken(appId);
return Response.status(200).entity(token).build();
}
}
如果您将MyCommonServices从
@Path(value=“/”)
更改为@Path(value=“/app”)
和@Path(value=“/app/{param}”)
更改为@Path(value=“/{param}”)
?谢谢,但我在这些类中还有其他方法。我认为问题在于@Path(value=“/”)
MyCommonServices.Java您是否可以更改为@Path(value=“/comm”)
并检查其他路径是否有效。您是否可以检查尝试访问此url时返回的响应?要执行此操作,只需在浏览器上按F12并检查网络流量。另外,我想知道您使用的是哪个j2ee服务器以及哪个版本。对不起,问题出在我的过滤器上。我更新了我的问题。你能调查一下吗?嗯,我不明白你的过滤器的用途:/是的,改变了它,但现在它也不能与其他人一起工作。对不起,问题是我的过滤器。我更新了我的问题。你能调查一下吗?catch(例外e){newPath=“f”+path;}
你甚至没有记录任何问题。从日志记录+抛出任何异常开始,然后尝试执行任何其他操作。您运行的是哪台服务器?@eis,即使在我打印异常后,也不会出现异常。。