javax.xml.ws.WebServiceException: non défini type de port Java Struts SOAP WSDL
ok j'ai vraiment un problème étrange que je continue à chercher une solution sur google et yahoo pour près de 4 heures aujourd'hui. Et je cherche désespérément une solution.
public static String [] checkCardAccount(String cardNumber, String cardIssuer, String securityNumber){
URL url = null;
try {
url = new URL("http://localhost:8999/bankcard?wsdl");
} catch (MalformedURLException e) {
e.printStackTrace();
}
QName qname = new QName("http://server.bcard.soap.com/","BankCardImplService");
Service service = Service.create(url,qname);
BankCard bankcard = service.getPort(BankCard.class);
return bankcard.getCardClientData(cardNumber, cardIssuer);
}
le code ci-dessus est mon client pour accéder au service SOAP, il fonctionne vraiment dans une application java autonome, mais quand je l'intégrer à mon Java Struts demande il est dit à la suite de l'erreur ci-dessous
javax.xml.ws.WebServiceException: non défini type de port:
{http://bankcard.api.com/}BankCard à
com.soleil.xml.interne.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:349)
au
com.soleil.xml.interne.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:355)
au javax.xml.ws.Service.getPort(Service de.java:161) à
com.l'api.de la carte bancaire.BankCardClient.checkCardAccount(BankCardClient.java:25)
au com.d'action.CardregAction.execute(CardregAction.java:18)
org.apache.jambes de force.de la chaîne.commandes.servlet.ExecuteAction.execute(ExecuteAction.java:58)
au
org.apache.jambes de force.de la chaîne.commandes.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
au
org.apache.jambes de force.de la chaîne.commandes.ActionCommandBase.execute(ActionCommandBase.java:51)
au
org.apache.commons.de la chaîne.impl.ChainBase.execute(ChainBase.java:191)
au
org.apache.commons.de la chaîne.génériques.LookupCommand.execute(LookupCommand.java:305)
au
org.apache.commons.de la chaîne.impl.ChainBase.execute(ChainBase.java:191)
au
org.apache.jambes de force.de la chaîne.ComposableRequestProcessor.processus(ComposableRequestProcessor.java:283)
au
org.apache.jambes de force.d'action.ActionServlet.processus(ActionServlet.java:1913)
au
org.apache.jambes de force.d'action.ActionServlet.doPost(ActionServlet.java:462)
au javax.servlet.http.HttpServlet.service(HttpServlet.java:637) à
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) à
org.apache.catalina.de base.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
au
org.apache.catalina.de base.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
au
org.apache.catalina.de base.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
au
org.apache.catalina.de base.StandardContextValve.invoke(StandardContextValve.java:191)
au
org.apache.catalina.de base.StandardHostValve.invoke(StandardHostValve.java:127)
au
org.apache.catalina.les vannes.ErrorReportValve.invoke(ErrorReportValve.java:102)
au
org.apache.catalina.de base.StandardEngineValve.invoke(StandardEngineValve.java:109)
au
org.apache.catalina.connecteur.CoyoteAdapter.service(CoyoteAdapter.java:298)
au
org.apache.coyote.http11.Http11Processor.processus(Http11Processor.java:857)
au
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processus(Http11Protocol.java:588)
au
org.apache.tomcat.util.net.JIoEndpoint$Par Travailleur.exécuter(JIoEndpoint.java:489)
à java.lang.Fil de discussion.exécution(Thread.java:662)
Maintenant, je vois vraiment que le problème est l'espace de noms cible parce que, comme je l'ai changer la variation de l'erreur, il dit que la validité de services est {http://bankcard.api.com/}BankCard
où je suis allé mal? ce code fonctionne sur les sur Application Java, mais pas dans mon Java Struts web app
OriginalL'auteur Mp de la Vega | 2012-11-16
Vous devez vous connecter pour publier un commentaire.
donner endpointIneterface dans @WebService annotation dans la mise en œuvre de la classe, si vous n'avez pas donner de point de terminaison de l'interface, vous devez mentionner pleinement qualifié du nom du port tout en utilisant getPort méthode.
service.getPort("PortQName",BankCard.class);
kumar, pourriez-vous s'il vous plaît montrer un exemple de comment parler pleinement qualifié du nom du port?
OriginalL'auteur anil kumar
Vous avez besoin d'annoter le
BankCardImpl
classe avec@WebService(name="BankCard")
Vous pouvez ensuite utiliser
service.getPort(BankCard.class);
OU
Si vous venez de les annoter avec
@WebService
ou ont donné un autre nom, alors vous aurez besoin de fournir plus de renseignements à lagetPort()
méthode:remplacer
avec
OriginalL'auteur MrCelticFox