Axis SecureSocketFactory - 设置构造函数属性

时间:2009-03-16 18:51:10

标签: attributes https axis factory

我有一个客户SecureSocketFactory设置为在使用以下属性进行https连接时由Axis使用:

AxisProperties.setProperty("axis.socketSecureFactory",
    "com.metavante.csp.model.manager.mobilepayments.MonitiseSSLSocketFactory");

当此类由Axis实例化时,将调用具有Hashtable(属性)的构造函数。我看到在此表中设置了超时属性。反正有没有设置更多的值? 我希望能够通过使用静态或系统属性在每个实例场景上配置Socket Factory,而不是全局。

编辑:我发现这些属性实际上是HttpSender(BasicHandler)选项。我仍然无法动态设置它们。

2 个答案:

答案 0 :(得分:2)

我想出了解决这个问题的方法。在我想要设置我使用的属性的代码中: serviceLocator.getEngine().setOption(USE_CERT_PROPERTY, new Boolean(true));

其中getEngine返回正在使用的AxisEngine。然后在插座工厂我可以:

Boolean useSMS = (Boolean) MessageContext.getCurrentContext().getProperty(OtherClass.USE_CERT_PROPERTY);

我可以将对象设置为任何东西,也许我会使用我需要的证书名称。希望这有助于某人。

答案 1 :(得分:1)

如果您对修改SocketFactory行为感兴趣,可以检索SocketFactory实例,然后更改或添加属性。但是如果你这样做,你也应该注入HashTable属性(带超时)。我认为没有最终的解决方案。

AxisProperties.setProperty("org.apache.axis.components.net.SecureSocketFactory", MyAxisSocketFactory.class.getName());
MyAxisSocketFactory factory = (MyAxisSocketFactory) SocketFactoryFactory.getFactory("https", myHashTableParams);
factory.setMyStuff();

在此代码之后,将创建和配置SocketFactory实例,并准备在Web服务中使用,或者其他任何内容^ _ ^