Web services ws-security策略未应用于来自Websphere上衍生线程的请求

Web services ws-security策略未应用于来自Websphere上衍生线程的请求,web-services,websphere,quartz-scheduler,ws-security,Web Services,Websphere,Quartz Scheduler,Ws Security,我使用ws-security-policy在websphere7上的web应用程序中运行web服务客户端 当从web会话或上下文侦听器中的主线程调用客户端时,请求将按照策略进行加密 但是,当从上下文监听器的派生线程调用时,请求将作为普通SOAP进行处理。为什么没有应用策略处理程序 我还问了这个问题您可以将Quartz作业处理代码(web服务消费)转换为消息驱动bean(MDB),并将作业调度代码更改为将JMS消息发送到队列/目标,而不是使用非JavaEE线程(Quartz)。从MDB消费web服

我使用
ws-security-policy
websphere7
上的web应用程序中运行web服务客户端

当从web会话或上下文侦听器中的主线程调用客户端时,请求将按照策略进行加密

但是,当从上下文监听器的派生线程调用时,请求将作为普通SOAP进行处理。为什么没有应用策略处理程序


我还问了这个问题

您可以将Quartz作业处理代码(web服务消费)转换为消息驱动bean(MDB),并将作业调度代码更改为将JMS消息发送到队列/目标,而不是使用非JavaEE线程(Quartz)。从MDB消费web服务的一个优点是,您可以使用JAX-WS注释,如@WebServiceRef,就像在容器管理的组件(如servlet和上下文侦听器)中一样。这将为您提供托管web服务客户端的容器注入,这些客户端可以在应用程序服务器中配置安全策略。

问题似乎是由于生成了非托管线程。现在我正在寻找使用类似计时器服务的东西。谢谢斯科特。目前,我们已经将执行代码移动到外部cron作业调用的servlet中,这是影响最小的解决方案。在您的解决方案中,什么是调度组件?如果它仍然是Quartz,我不确定是否会像您所指出的那样返回context.Timer服务。由于bean仍然是容器管理的,所以对soap客户端的组件范围的引用也将被管理(注入或查找),并且容器管理的策略应该完好无损。对于时间服务本身,服务器将应用这些策略。所以,这就解决了问题。