是否有可能从WebServlet的请求转发到休息帮手的servlet(javax.ws.rs.core.Application)
问题: 我有一个有效的URL转发到任何一个代理servlet或Servlet一个WebFilter的这处理管理员的网页以监视最近的请求等等。是否有可能从WebServlet的请求转发到休息帮手的servlet(javax.ws.rs.core.Application)
管理servlet负责将ajax请求转发到REST服务(在controlpannel.jsp呈现的网页中登录login.jsp之后),但显然剩下的服务与WebFilter和WebServlets具有不同的上下文?
问题: 那么,是否有可能从我的WebServlet转发到其他帮助程序servlet(及其资源类)?
更具体的信息:
这是我如何使用转发:
ServletContext sc = request.getServletContext();
RequestDispatcher dispatcher = sc.getRequestDispatcher(forwardURI);
dispatcher.forward(request, response);
我试图转发到这个URI:
forwardURI = /REST/proxy_client/newer_than
我休息帮手的servlet:
@Stateless
@ApplicationPath("/REST")
public class RestService extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> restResourceClasses = new HashSet<Class<?>>();
restResourceClasses.add(ProxyClientResource.class);
return restResourceClasses;
}
}
而这种资源类:
@Path("/proxy_client")
@Stateless
public class ProxyClientResource {
@EJB
private ProxyClientBean proxyClientBean;
@GET
@Produces("application/json")
@Path("/newer_than")
public String getNumberOfEntriesNewerThanTimestamp(@QueryParam("timestamp") Expression<Timestamp> indexTimestamp,
@QueryParam("numberOfclients") Integer numberOfclients) {
List<ProxyClient> pageData = proxyClientBean.getElementsNewerThan(numberOfclients, indexTimestamp);
return convertToJSONstring(pageData);
}
解决方案的尝试:
,我发现这个question有关如何从一个servlet调用REST Web服务,但它们使用一个客户端和没有转发。
编辑:
我有一个配置问题(可能仍然有一个),所以现在当我尝试着给我休息助手的servlet(一个延伸javax.ws.rs.core.Application)我得到这个错误:访问REST API时
RestServlet is currently unavailable
(在web.xml我调用servlet RestServlet)
直接获得:
HTTP Status 500 - Authenticator.invoke() failed
但我找不到这是什么意思。
EDIT2:
我会尽量repacing一个应用的子类,在web.xml中的子类和@ApplicationPath一个配置不似乎为我工作。另外,当我尝试获取剩下的ServletsContext时,我得到一个错误,没有指定类,这是使用web.xml配置时要做的事情。
EDIT3:
我部署我的HCP与beeing,我甚至不能访问我的REST服务,我found这个SAP讨论潜在的问题的应用程序。 当我得到我的REST服务工作没有转发,我会在这里报告。
Edit4: 这实际上回答了来自EDIT3 问题我不得不添加的球衣1.19.1(不2.X因为使用Java EE6 IM只按要求DWP 3.0不支持3.1以上)由项目库否则它会说我没有指定一个servlet类(但是当我尝试添加javax.ws.rs.core.Application时,它会告诉我这是没有Servlet类,即使我已经看到这种配置)。
我真正的问题是SAP Hana Cloud Platform上的Java ee6容器中的javax.ws.rs.core.Application
未能用于未知原因。
解决方案是下载并将jersey-bundle-1.19.1.jar
添加到WEB-INF/lib
和项目库。
转发从香草servlet到其余服务的请求没有任何问题!如果它不适用于你的情况,那么它最有可能是你的设置或一些意想不到的原因,就像我的情况。
目前发生了什么?任何错误? – markbernard
目前我收到上面提到的错误 – MADforFUNandHappy