首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Stateless @Webservice的过滤器

@Stateless @Webservice的过滤器
EN

Stack Overflow用户
提问于 2016-06-22 02:30:38
回答 2查看 1.1K关注 0票数 1

我正在尝试过滤(javax.servlet.Filter)所有web服务端点上的所有传入SOAP请求。这些web服务是从@Stateless EJB创建的,并使用Message Authentication over SSL

我的web服务的注释如下

代码语言:javascript
复制
@WebService
@Stateless
public class WebServiceA {
   @EJB
   private MyEJB ejbRef;
   ...
   public Result getMethodA()...
}

我在Glassfish的lib/目录中有一个自定义过滤器,在config/default-web.xml中,我将该过滤器映射到<url-patter>/*</url-pattern>

代码语言:javascript
复制
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一起工作,这是ejb- @WebService的一部分所需的

*编辑我尝试过EJBInterceptors,就像SOAPHandler一样,拦截器是在容器管理的安全性之后调用的。

谢谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2016-06-22 02:42:45

过滤器与servlet技术一起使用。将它们与EJB/JAX WS一起使用将不会拦截请求。

您应该使用的是EJB拦截器,它的作用与过滤器完全相同。

这里有一个示例。

代码语言:javascript
复制
public class MyEJBInterceptor {

    @AroundInvoke
    public Object invoke(InvocationContext context) throws Exception  {

    //Your code goes here
    }

要使用此拦截器,请执行以下操作:

代码语言:javascript
复制
@Stateless
@Interceptors({MyEJBInterceptor.class})
public class MyBean implements MyBeanLocal {

    enter code here

}
票数 2
EN

Stack Overflow用户

发布于 2016-06-22 21:32:20

除了编辑Payara的源代码之外,我决定通过删除Secure Service和禁用Message Authentication over SSL来禁用ws_security,并在我的glassfish-ejb-jar.xml中将<transport-guarantee>设置为NONE这应该没问题,因为与web服务器的通信仍然是https。现在,我可以创建一个EJBInterceptorSOAPHandler来适当地编辑SOAP header,然后调用我的自定义领域的登录机制。感谢@user2286167的指导。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37952005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档