当前位置: 首页 > 知识库问答 >
问题:

WebServiceException:未定义端口类型Java Struts SOAP WSDL

鲁城
2023-03-14

好吧,我真的有一个奇怪的问题,我一直在谷歌和雅虎寻找解决方案几乎4个小时今天。我拼命想办法解决。

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应用程序中时,它会出现以下错误

javax.xml.ws.webServiceException:未定义的端口类型:{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(wsServiceDelegate.java:161)atsor.process(composableRequestProcessor.java:283)位于org.apache.struts.action.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)位于eAdapter.Java:298)位于org.apache.coyote.http11.http11processor.processor.processor.:857)位于org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.:588)位于org.apache.tomcat.util.net.jioEndpoint$worker.run(jioEndpoint.Java:489)位于Java.lang.thread.run(thread.Java:662)

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

我哪里出错了?这段代码可以独立运行于Java的应用程序中,但不能运行于我的Java Struts web应用程序中

共有2个答案

尉迟彬
2023-03-14

您需要使用@webservice(Name=“bankcard”)
注释bankcardimpl类,然后可以使用service.getport(Bankcard.class);

如果您只是使用@webservice对其进行了注释,或者已经为其赋予了另一个名称,那么您将需要向getPort()方法提供更多信息:

替换

BankCard bankcard = service.getPort(BankCard.class);

QName port_name = new QName("http://server.bcard.soap.com/","BankCardImplPort");
BankCard bankcard = service.getPort(port_name, BankCard.class);
吕昀
2023-03-14

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

service.getPort(“portqname”,bankcard.class);

 类似资料:
  • 问题内容: 我遇到了这个JSON代码。我注意到它利用了价值。在哪里可以找到有关此值类型的更多信息? 问题答案: *即使在javascript中有效, *undefined 也不是有效的json值。根据官方json标准 (ECMA-404,第5节): JSON值可以是对象,数组,数字,字符串,true,false或null。 对于json,请使用 null 而不是 undefined :

  • 我是一个新的编码和上课目前,我不知道什么似乎是这里的问题,但我试图阅读和挑选特定的信息,从一个单独的文本文件。非常感谢任何帮助!

  • 问题内容: 我已将Java动态Web项目导入Eclipse IDE(已在Eclipse IDE中实现并正常工作)。 运行项目时,我收到“ 类型未定义”错误。 我已经按照结构将每个文件复制到IDE中,并且工作已完成。 现在我只想知道为什么在导入项目时出现此错误。有人遇到过同样的问题吗?请让我知道我可能犯了什么错误。 问题答案: 当我在IntelliJ中使用的servlet-api版本与Tomcat8

  • 我正在使用一个接口来定义一个新类型。这是正确的做法吗?我做如下: 然后,为了实例化它,我必须这样做: 它实际上创建了一个空对象,这不是我想要的;但是如果没有这个,它会引发一个错误,例如,“无法读取未定义的属性‘问题’”。我定义新类型的方法是错误的吗? ====EDIT====以下是我根据你的评论所做的: 然后我说: 然后我仍然得到这个错误:无法读取未定义的属性“push”。我不想在定义接口的地方启

  • 这是我的pom 时出现以下错误

  • 我正在使用AnyLogic 8 University 8.7.0版本并进行基于代理的建模。我已经创建了一个汽车代理资源库,我想将汽车的初始位置(GISPoints)存储在一个变量中。使用该装置。getHomeLocation()方法给了我一个错误:“类型Auto的方法getHomeLocation()未定义”。这里,“unit”是Auto类型的ResourcePool单元的名称。 任何解决方法都会