我想過濾(javax.servlet.Filter)所有傳入的SOAP請求在我所有的Web服務端點上。這些Web服務從@Stateless EJB的創建和使用Message Authentication over SSL
過濾@Stateless @Webservice
我的Web服務註釋像
@WebService
@Stateless
public class WebServiceA {
@EJB
private MyEJB ejbRef;
...
public Result getMethodA()...
}
我有一個存在於我的GlassFish的lib/
目錄和裏面config/default-web.xml
我必須映射到過濾器自定義過濾器<url-patter>/*</url-pattern>
public final class MyFilter implements Filter {
@Override
public void init()...
@Override
public void destroy()...
@Override
public void doFilter(...) {
...
System.out.println("Got to Filter");
...
}
}
過濾器被稱爲上每一個請求我做,除了我的SOAP端點的應用程序。過濾器被打到admin console
,過濾器被打到-war
文件,過濾器在進入undeployed EAR
時被擊中......基本上除了已部署的SOAP端點之外的所有東西(從未擊中我的WebServiceA -> getMethodA()
端點
我也嘗試推行SOAPHandler
但遺憾的是,這是處理後,容器的身份驗證方法被調用(JAAS)
,我必須改變登錄上下文之前SOAP頭。
我已經看過這個鏈接Is it possible to define a servlet filter for a stateless ejb webservice, on GlassFish 3.1但@RequestScoped
不工作@Stateless
這是在@WebService
上需要的,這是ejb-jar的一部分
*編輯我嘗試了EJBInterceptors,就像SOAPHandler一樣,攔截器在容器管理的安全性之後被調用。
感謝您的幫助
謝謝,這聽起來很有希望。我會試着讓一個例子工作,如果它確實,我會接受。 –
攔截器確實被調用,但直到JAAS被調用之後,我才需要它。也許有一種方法來定義優先級/順序? –
它按攔截器 –