2017-09-05 70 views
1

问题: 我有一个有效的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类,即使我已经看到这种配置)。

+0

目前发生了什么?任何错误? – markbernard

+0

目前我收到上面提到的错误 – MADforFUNandHappy

回答

1

我真正的问题是SAP Hana Cloud Platform上的Java ee6容器中的javax.ws.rs.core.Application未能用于未知原因。

解决方案是下载并将jersey-bundle-1.19.1.jar添加到WEB-INF/lib和项目库。

转发从香草servlet到其余服务的请求没有任何问题!如果它不适用于你的情况,那么它最有可能是你的设置或一些意想不到的原因,就像我的情况。

相关问题