当前位置: 首页 > 知识库问答 >
问题:

过滤@Stateless@Webservice

岳宣
2023-03-14

我试图过滤(javax.servlet.filter)所有web服务endpoint上的所有传入SOAP请求。这些web服务是从@Stateless EJB创建的,并通过SSL使用消息身份验证

我的web服务的注释如下

@WebService
@Stateless
public class WebServiceA {
   @EJB
   private MyEJB ejbRef;
   ...
   public Result getMethodA()...
}

我有一个自定义过滤器,它存在于Glassfish的lib/目录和config/default网站中。xml我将过滤器映射到

public final class MyFilter implements Filter {

   @Override
   public void init()...

   @Override
   public void destroy()...

   @Override
   public void doFilter(...) {
      ...
      System.out.println("Got to Filter");
      ...
   }
}

除了我的SOAPendpoint之外,我对应用程序发出的每一个请求都会调用过滤器。过滤器被击中去管理控制台,过滤器被击中去-war文件,过滤器被击中去未部署的EAR...基本上除了部署的SOAP终端之外的一切(永远不会点击我的WebServiceA-

我还尝试实现了一个SOAPHandler,但遗憾的是,这是在调用容器的身份验证方法(JAAS)之后处理的,我必须在登录上下文之前更改SOAP头。

我已经查看了这个链接,是否可以在GlassFish 3.1上为无状态ejb Web服务定义servlet过滤器,但是@RequestScoped不适用于作为ejb jar一部分的@webservice所需的@stateless

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

谢谢你的帮助


共有2个答案

徐学潞
2023-03-14

除了编辑Payara的源代码外,我决定通过删除安全服务和禁用通过SSL的消息身份验证并设置

余善
2023-03-14

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

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

这里有一个例子。

public class MyEJBInterceptor {

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

    //Your code goes here
    }

要使用此拦截器:

@Stateless
@Interceptors({MyEJBInterceptor.class})
public class MyBean implements MyBeanLocal {

    enter code here

}
 类似资料:
  • stateless-future 用于异步编程的纯函数风格Future 示例代码: import scala.concurrent.duration._import scala.util.control.Exception.Catcherimport com.qifun.statelessFuture.Futureval executor = java.util.concurrent.Execut

  • 问题内容: 我正在学习使用JAX-RS进行一些轻松的api开发,并且对我的资源类有疑问。 我的理解是,我的资源类应该是RequestScoped,但是,当它是RequestScoped时,我对实体管理器的persist方法的调用将引发TransactionRequiredException。 如果我将资源类更改为无状态,那么一切都很好,并且实体管理器可以继续存在而不会出现任何问题。 我还是Java

  • Filter(过滤器)是 Java 组件,允许运行过程中改变进入资源的请求和资源返回的响应中的有效负载和头信息。 Java Servlet API 类和方法提供了一种轻量级的框架用于过滤动态和静态内容。还描述了如何在 Web 应用配置 filter,以及它们实现的约定和语义。 网上提供了 servlet 过滤器的 API 文档。过滤器的配置语法在第14章的“部署描述符”中的部署描述符模式部分给出。

  • 过滤掉不在范围内的数值。 用法 Your browser does not support the video tag. 案例:小台灯 功能:15:00:00时灯自动亮起,15:30:00时自动熄灭 工作原理 在配置项中设定一组范围。如果输入落在范围内,则输出输入本身;否则,输出no。

  • 过滤操作符 在基于推送的方式下,选择接受项的方式和时间很重要。这些操作符提供了从 observable 源中接受值和处理backpressure (背压)的技术。 内容 audit auditTime debounce debounceTime :star: distinctUntilChanged :star: filter :star: first ignoreElements last sa

  • 问题内容: “过滤后的查询和过滤器”与“根查询和过滤器”之间有什么区别吗?例如 情况1: 情况2: 我在http://elasticsearch-users.115913.n3.nabble.com/Filtered-query-vs-using- filter-outside-td3960119.html中 找到了此讨论,但所引用的URL是404,并且解释过于简洁我。 请示教或提供指出这些区别的