2017-09-05 71 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到其餘服務的請求沒有任何問題!如果它不適用於你的情況,那麼它最有可能是你的設置或一些意想不到的原因,就像我的情況。

相關問題