javax.xml.ws.WebServiceException:未定义的端口类型 Java Struts SOAP WSDL [英] javax.xml.ws.WebServiceException: Undefined port type Java Struts SOAP WSDL

查看:118
本文介绍了javax.xml.ws.WebServiceException:未定义的端口类型 Java Struts SOAP WSDL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,我真的有一个奇怪的问题,今天我一直在谷歌和雅虎上寻找解决方案将近 4 个小时.我拼命寻找解决方案.

ok I have really a strange problem that I keep looking for solution in google and yahoo for almost 4 hours today. And I desperately looking for a 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);
    }

上面的代码是我用于访问 SOAP 服务的客户端,它确实可以在独立的 Java 应用程序中运行,但是当我将它嵌入到我的 Java Struts 应用程序中时,它显示以下错误

the above code is my client for accessing the SOAP service, it really works in a standalone java application but when I embed it to my Java Struts application it says the following error below

javax.xml.ws.WebServiceException:未定义的端口类型:{http://bankcard.api.com/}BankCard 在com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:349)在com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:355)在 javax.xml.ws.Service.getPort(Service.java:161) 在com.api.bankcard.BankCardClient.checkCardAccount(BankCardClient.java:25)在 com.action.CardregAction.execute(CardregAction.java:18) 在org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)在org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)在org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)在org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)在org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)在org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)在org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)在org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)在org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)在org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)在org.apache.tomcat.util.net.JioEndpoint$Worker.run(JioEndpoint.java:489)在 java.lang.Thread.run(Thread.java:662)

javax.xml.ws.WebServiceException: Undefined port type: {http://bankcard.api.com/}BankCard at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:349) at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:355) at javax.xml.ws.Service.getPort(Service.java:161) at com.api.bankcard.BankCardClient.checkCardAccount(BankCardClient.java:25) at com.action.CardregAction.execute(CardregAction.java:18) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662)

现在我真的看到问题是目标命名空间,因为当我更改它时,错误更改为它说有效服务是 {http://bankcard.api.com/}BankCard

Now I really see that the problem is the target namespace because as I change it the error changes to that it says that the valid services is {http://bankcard.api.com/}BankCard

我哪里出错了?此代码在 Java 应用程序上独立运行,但在我的 Java Struts 网络应用程序中不运行

where I went wrong? this code works on standalone on Java Application but not in my Java Struts web app

推荐答案

在实现类的@WebService注解中给出endpointIneterface,如果不给出endpoint接口,在使用getPort方法时必须提供完全限定的端口名.

give endpointIneterface in @WebService annotation in the implementation class, if you dont give endpoint interface, you have to mention fully qualified port name while using getPort method.

>

service.getPort("PortQName",BankCard.class);

service.getPort("PortQName",BankCard.class);

这篇关于javax.xml.ws.WebServiceException:未定义的端口类型 Java Struts SOAP WSDL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆