2009-03-16 6 views
3

J'ai un SecureSocketFactory client défini pour être utilisé par l'axe lors de la connexion https en utilisant la propriété suivante:Axe SecureSocketFactory - Réglage du constructeur attributs

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

Lorsque cette classe est instanciée par Axis, le constructeur avec un Hashtable (attributs) est appelée. Je vois que l'attribut timeout est défini dans cette table. Y at-il de toute façon d'ajouter plus de valeurs à cela? Je voudrais pouvoir configurer Socket Factory sur un scénario par instance plutôt que globalement en utilisant des propriétés statiques ou système.

Modifier: J'ai découvert que ces attributs sont en fait les options HttpSender (BasicHandler). Je suis toujours incapable de les définir de manière dynamique.

Répondre

1

J'ai trouvé un moyen de contourner le problème. Dans mon code où je voulais définir la propriété que j'utilise: serviceLocator.getEngine().setOption(USE_CERT_PROPERTY, new Boolean(true));

où getEngine renvoie l'AxisEngine en cours d'utilisation. Puis, dans l'usine de socket je peux:

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

je pourrais définir l'objet à tout, peut-être que je vais aller avec le nom du certificat que je avais besoin. J'espère que cela aide quelqu'un.

1

Vous pouvez récupérer l'instance de SocketFactory, puis modifier ou ajouter des attributs si le comportement de modification de SocketFactory vous intéresse. Mais si vous faites cela, vous devez également injecter l'attribut HashTable (avec le timeout). Je pense qu'il n'y a pas de solution finale et jolie.

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

Une fois ce code, l'instance de SocketFactory sera créé et configuré et prêt à l'emploi dans les services Web, ou quoi que^_^

Questions connexes