【发布时间】:2016-10-23 10:47:13
【问题描述】:
我正在尝试过滤 (javax.servlet.Filter) 我所有 Web 服务端点上的所有传入 SOAP 请求。这些 Web 服务由 @Stateless EJB 创建并使用 Message Authentication over SSL
我的网络服务被注释为
@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 一样,拦截器是在容器管理的安全性之后调用的。
感谢您的帮助
【问题讨论】:
标签: java soap filter servlet-filters