0

我使用 jax ws 准备了一个 Spring Web 服务。它工作正常,我可以从许多其他项目中调用此服务。

有趣的事情发生在另一个项目中。我尝试再次使用此客户端(通过添加源和仅使用 jar 的类来尝试)。当我在服务上调用 get 端点端口方法时(在我可以调用 Web 服务上的实际方法之前),它静默失败,没有迹象表明向服务发出请求,也没有捕获到异常。只有我的控制器上有一个 finally 子句,它会进行一些计算并退出(并打印日志)。

为什么此失败不会生成一般异常?如何以其他方式跟踪错误?或者一般来说,我做错了什么?

用法:

logger.debug("web service: " + transferService.toString());                                                                          
            logger.debug("web service qname: " + transferService.getServiceName());                                                              
            logger.debug("web service url: " + transferService.getWSDLDocumentLocation());                                                       
            //logger.debug("web service endpoint: " + transferService.getTransferEndPointPort().toString());                                     

            QueryCardNumberWithIdWSResponse response =                                                                                           
                                transferService.getTransferEndPointPort().queryId(request);

transferService 对象正常运行,直到我们调用 getTransferEndPointPort。然后它崩溃了。

getTransferEndPoint 实现:

@WebEndpoint(name = "TransferEndPointPort")
    public TransferEndPoint getTransferEndPointPort() {
        loggerApache.debug("getting transfer end point ");
        loggerApache.debug("service name: " + super.getServiceName() );
        return super.getPort(new QName("http://www.blabla.com", "TransferEndPointPort"), TransferEndPoint.class);
    }

它打印日志,但在 super.getPort 之后没有任何反应,只是控制器中的 finally 块起作用。

编辑:过了一会儿,我记得在 catch 子句中使用 Throwable。所以我最终从服务中抓住了一个可扔的东西。

它是 :

java error java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;

在网上搜索后,我得出结论,由于 java 版本,我不应该在我的 Web 服务中使用 WebFault。我从 web 方法中删除了 throws 异常(可能我在早期阶段忘记删除它),现在它似乎正在工作。

4

0 回答 0