[Java lista] JAX-WS web service kliens konténerben & https auth
István Viczián
viczian.istvan at gmail.com
2007. Aug. 24., P, 00:10:18 CEST
Üdv,
spring-2.0.6
jax-ws 2.1.1
jaxws-spring-1.7
WSDL alapján generálok osztályokat, és web-szolgáltatás klienst. A
wsimport parancsot használom, ahol megadom a
wsdlLocation="/WEB-INF/wsdl/service.wsdl" paramétert.
Sajnos így a generált állományban megjelenik a követekező kódrészlet:
private final static URL SERVICE_WSDL_LOCATION;
static {
URL url = null;
try {
url = new URL("file:/C:/Kaffe/NetBeans5.5/WEB-INF/wsdl/service.wsdl");
} catch (MalformedURLException e) {
e.printStackTrace();
}
CMPSTRXCORE_WSDL_LOCATION = url;
}
Természetesen a file nem ott van, önhatalmúleg teszi elé a prefixet.
Sajnos a WSDL http(s)-en nem elérhető, meg heggeszteni is kellett
rajta, hogy a Java megegye (.NET alapú), és amúgy sem akarom, hogy
kinyúlkáljon érte.
A @WebServiceClient annotation wsdlLocation paramétere nem segít.
Viszont ahhoz, hogy be tudjam tölteni, az
ApplicationContext.getResource("WEB-INF/wsdl/service.wsdl").getUrl()-el
tudom példányosítani a generált kliens osztályt, ami elég randa
megoldás, mert a web controllerből végig kell hurcolnom pár service-en
keresztül.
Az érzésem az, hogy vagy standalone programokra lett ez a ws kliens
kitalálva, vagy akkor használható, ha a WSDL valami URL-en kinn van.
(Minden példában csak a megszokott http://localhost:8080/... wsdl
hivatkozás van).
Szóval van valakinek ötlete, hogy hogyan lehetne megmondani a
wsimport-nak, hogy a generált kliens a web-alkalmazás WEB-INF
könyvtárából vegye a WSDL-t?
Más.
Kliensként akarok https-en kliens certificate-tel web-szolgáltatást
meghívni. Ehhez kell a szerver CA-jának és a kliens cert kiállító
CA-jának a tanúsítványa a trusted-ek közé. Valamint kaptam egy kliens
cert-et, pfx formátumban.
Valamint én is akarok https-en szolgáltatni, szintén kliens
tanúsítványos autentikációval. Ehhez generálgatnom kell mindenféle
tanúsítványokat. Szóval ez az oldal még viszonylag jól dokumentált, de
az előbbi kevésbé. Hova kell elhelyezni melyik tanúsítványokat,
keystore-okat, ha szerverként és kliensként is web-szolgáltatást
akarok igénybe venni/nyújtani Tomcat-en?
Valamint a PFX formátumot át lehet valami Java közeli formátumra
konvertálni, erre sem találtam olyan megoldást, ami működött is volna.
Jelenleg kliensként használok csak https-t, és a Tomcat-et indítom
négy paraméterrel:
-Djavax.net.ssl.trustStore=conf/truststore
-Djavax.net.ssl.trustStorePassword=storepass
-Djavax.net.ssl.keyStoreType=PKCS12
-Djavax.net.ssl.keyStore=conf/keystore.pfx
-Djavax.net.ssl.keyStorePassword=storepass
Egyrészt nem tetszik, hogy a 2. pfx, meg amúgy is az egész, nincs
valami szebb megoldás?
És ezen kívül még hova jönnek majd a szerver tanúsítványai? Boccs a
konyhanyelvért.:)
Viczi
További információk a(z) Javalist levelezőlistáról