Comment utiliser wsimport quand le serveur s'attend à ce certificat client?
J'ai un web service à l'aide mutuelle authentification SSL. Je peux y accéder très bien dans le navigateur, quand j'ai le certificat du client installé.
J'ai besoin d'être en mesure d'accéder à cette aide wsimport
pour générer le code Java pour accéder au service.
Comment puis-je configurer mes informations d'identification afin que je puisse accéder à l'URL à l'aide de wsimport
?
Voici un exemple de ce que je vais essayer, mais non en raison de l'incapacité à s'authentifier.
wsimport ./sample.wsdl -p com.company.ws.sample -Xnocompile -d ./src -extension -keep -XadditionalHeaders
Merci pour toute aide
Edit:
C'est ce que wsimport
imprime. Le WSDL est certainement valable, et à l'emplacement donné, c'est une question de trouver comment transmettre mes informations d'identification pour l'authentification:
wsimport https://wsdl.location.com?WSDL -p com.company.ws.sample -Xnocompile
-d ./src -extension -keep -XadditionalHeaders
parsing WSDL...
[ERROR] Received fatal alert: handshake_failure
Failed to read the WSDL document: "https://wsdl.location.com?WSDL", because 1) could
not find the document; /2) the document could not be read; 3) the root element of
the document is not <wsdl:definitions>.
[ERROR] failed.noservice=Could not find wsdl:service in the provided WSDL(s):
At least one WSDL with at least one service definition needs to be provided.
Failed to parse the WSDL.
J'ai mis à jour le post pour afficher plus de détails. Merci
ibswings.blogspot.dans/2008/12/... essayez ceci
Essayé... même résultat
OriginalL'auteur Cuga | 2012-08-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez appeler directement le WsImport classe java (source) et ajouter la JVM nécessaire args Java pour savoir où chercher les certificats client.
Quelque chose comme
devrait faire l'affaire.
A échoué pour moi avec un
Exception in thread "main" java.lang.NoSuchFieldError: theInstance
, cependant j'ai trouvé une solution de rechange.OriginalL'auteur David Silva
J'ai réussi à le faire en mettant l'_JAVA_OPTIONS variable d'environnement avec les propriétés du système pour passer à travers, comme un fichier de commandes Windows, il ressemble à ceci (mettre votre mot de passe dans:
Pour la santé mentale en soi, les options Java dans le long 'set' ligne sont:
Vous peut ou peut ne pas avoir besoin de specift la
trustStore
; j'ai eu comme j'ai un couple de installe sur et Java a été ramasser le mauvais fichier cacerts pour moi.De même, vous n'aurez pas besoin d'
keyStorePassword
si le fichier de clés n'est pas protégé par mot de passe. Comme pourkeyStoreType
, vous aurez besoin de spécifier si vous n'êtes pas accès à un keystore Java.En fin de compte, la seule "obligatoire" est le
keyStore
qui définit où le certificat du client et des touches de vivre (et c'est seulement obligatoire si le certificat client n'est pas dans aucun des principaux Java magasins de certificats). En fait, l'exemple ci-dessus est pour un certificat client dans un fichier PFX générés par l'exportation à partir du magasin de certificats Windows.OriginalL'auteur Chris J
Je l'ai trouvé beaucoup plus facile (pas besoin de jouer avec -D, chemin de classe, ...):
1. télécharger le fichier wsdl via ssl avec votre navigateur (installer le certificat dans votre navigateur par défaut, double-cliquez sur le fichier de clés) ou encore plus facile avec soapUI (installer le fichier de clés via config/ssl), qui montre le contenu wsdl
2. exécutez le wsimport contre le téléchargement wsdl
C'est tout.
-wsdllocation <actualWsdlLocationURI>
àwsimport
parce que sinon, le générés webservice classes de point à l'absolu chemin d'accès local du wsdl.OriginalL'auteur Marc T