Bonjour,
préambule : j'utilise cxf 2.1.4, Jboss 4.0.5 avec une jdk 1.6.
Je dois me connecter à un WebService via HTTPS, ce que j'arrive à faire correctement.
Cependant, le réseau peut parfois être muni d'un proxy et il faut donc que je donne la possibilité de passer à travers ce proxy. pour celà, j'utilise le code suivant :
Mon problème est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 BindingProvider provider = (BindingProvider) port; provider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url); Client client = ClientProxy.getClient(provider); HTTPConduit conduit = (HTTPConduit) client.getConduit(); HTTPClientPolicy policy = new HTTPClientPolicy(); policy.setConnectionTimeout(TIME_OUT); policy.setReceiveTimeout(TIME_OUT); // Affectation du serveur proxy if (!StringTools.isNullOrEmpty(proxyHost)) { policy.setProxyServerType(ProxyServerType.HTTP); policy.setProxyServer(proxyHost); policy.setProxyServerPort(proxyPort); } conduit.setClient(policy); // Définition du compte d'authentification au proxy if (!StringTools.isNullOrEmpty(proxyUser)) { ProxyAuthorizationPolicy proxyAuthorizationPolicy = new ProxyAuthorizationPolicy(); proxyAuthorizationPolicy.setUserName(proxyUser); proxyAuthorizationPolicy.setPassword(proxyPwd); conduit.setProxyAuthorization(proxyAuthorizationPolicy); }
l'adresse du proxy et le port pour s'y connecter (l'HttpClientPolicy, quoi) sont bien pris en compte. Cependant, si je suis sur un proxy qui prend en compte une authentification "BASIC", l'user et le pwd (donc le ProxyAuthorizationPolicy) ne sont pas pris en compte et la connexion m'est refusée avec une belle erreur 407 Proxy Authentication Required.
Après avoir un peu fouillé, j'ai trouvé cette issue : https://issues.apache.org/jira/browse/CXF-2223 qui a l'air de correspondre à mon problème.
J'ai donc pris la version 2.1.9 de cxf qui doit normalement résoudre ce soucis.
Cependant, avec cette nouvelle revision et le même code que ci-dessus, une exception est remontée sur l'appel :
Voici le Stack :
Code : Sélectionner tout - Visualiser dans une fenêtre à part HTTPConduit conduit = (HTTPConduit) client.getConduit();
J'avoue que j'ai un peu cherché mais là je sèche un peu... Quelqu'un aurait-il une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*.http-conduit': Cannot create inner bean '(inner bean)' of type [org.apache.cxf.configuration.spring.JAXBBeanFactory] while setting bean property 'client'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public static java.lang.Object org.apache.cxf.configuration.spring.JAXBBeanFactory.createJAXBBean(javax.xml.bind.JAXBContext,java.lang.String,java.lang.Class)] threw exception; nested exception is java.lang.RuntimeException: javax.xml.bind.UnmarshalException - with linked exception: [javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,219] Message: <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114#ElementPrefixUnbound?http&http:client]" target="_blank">http://www.w3.org/TR/1999/REC-xml-na...p&http:client]</a>
Merci d'avance
Partager