2013-05-15 76 views
0

我有一个调用外部Web服务的Mule应用程序。在调用此Web服务之前,我必须调用会话密钥Web服务来检索会话密钥以发送给原信号目标Web服务。此会话密钥服务每次输入与登录相同的公司名称参数,并在每次调用10分钟时返回一个唯一字符串。每个Web服务呼叫都必须使用一个唯一的密钥,并且不能同时使用两个密钥。在Mule中创建会话密钥池

所以这些会话密钥不能被任何东西锁住,因为只有1个登录,但是对于1次登录只有多个不同的会话密钥。

我一直在寻找Apache Commons Pool for this,更具体地说 - GenericObjectPool并不需要每个会话密钥都是有效的密钥。

但我正努力以一种很好的方式将它与Mule融合在一起。我已经使用Spring进行了设置,并且我必须实现的接口指示我将所有的http请求和转换等与Java代码中的外部Web服务联系起来。但理想情况下,我想为此使用Mules核心运输和变压器。

什么是构建这个最好的方法?

创建一个拦截器?

注入传输到我的自定义代码?

或者有没有更好的方法来做简单的非键控池,更适合Mule?

任何指导赞赏。

回答

1

您可以让您的泳池对象工厂直接使用骡运输或通过MuleClient与您的流程交互。

如果您制作Spring bean MuleContextAware,您将收到一个MuleContext,您将从中获得一个带有getClient()的Mule客户端。

+0

感谢大卫的回应。我不知道我跟着。我不需要从我的流中调用我的java类的方法。实际上是另一种方式:我需要从我的Java代码中调用Mule端点或变换器来填充会话密钥池,并在密钥过期时更新池等。如果这有意义吗? –

+0

嘿,回顾我的答案。 –

+0

谢谢,我实际上一直在阅读您的书,并担心将我的组件与Mule的内部组件结合在一起。 MuleClient/MuleContextAware是最好的“坏”吗? –