2

我已经实现了两个完全相同的 JAXWS。

Concat-WS 接受一个字符串 a 连接一个单词。Upshift-WS 接受一个字符串并将其升档。

我将它们部署在 Tomcat 中,并使用 wsimport 工具创建了两个 JAXWS 客户端。

当我运行 Concat 客户端时,它可以工作,但使用 Upshift 客户端时,它会抛出:

javax.xml.ws.WebServiceException:标头中没有内容类型!

我已经阅读了一些关于此的帖子。所有这些似乎都与JBOSS有关,这不是我的情况,此外,两个确切的 JAXWS 怎么会有不同的行为?

编辑

这是 Upshift 网络服务

package upshift;

import javax.jws.WebService;

@WebService(endpointInterface = "upshift.Upshift")
public class UpshiftImpl implements Upshift {

    @Override
    public String upshift(String x) {

        return x.toUpperCase();

    }
}

这是 Concat 网络服务

package concat;

import javax.jws.WebService;

@WebService(endpointInterface = "concat.Concat")
public class ConcatImpl implements Concat {

    @Override
    public String concat(String x) {

        return x.concat("+concat");

    }
}

编辑二:

我发现第二个 JAXWS 在导出为 WAR 时出现问题。每次我尝试将其导出为 WAR 时,我都会得到以下信息:

org.eclipse.core.commands.ExecutionException: Error exportingC:/Users/rmescalera/Desktop/WS-upshift.war
    at org.eclipse.jst.j2ee.internal.archive.operations.ComponentExportOperation.execute(ComponentExportOperation.java:150)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl$1.run(DataModelPausibleOperationImpl.java:385)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:410)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:360)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.doExecute(DataModelPausibleOperationImpl.java:247)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.executeImpl(DataModelPausibleOperationImpl.java:219)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.cacheThreadAndContinue(DataModelPausibleOperationImpl.java:89)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.execute(DataModelPausibleOperationImpl.java:207)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard$1CatchThrowableRunnableWithProgress.run(DataModelWizard.java:220)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.lang.NullPointerException
    at org.eclipse.jst.j2ee.internal.archive.operations.JavaEEComponentExportOperation.getModuleParticipants(JavaEEComponentExportOperation.java:75)
    at org.eclipse.jst.j2ee.internal.archive.operations.JavaEEComponentExportOperation.getParticipants(JavaEEComponentExportOperation.java:43)
    at org.eclipse.jst.j2ee.internal.archive.operations.JavaEEComponentExportOperation.createFlatComponentArchiver(JavaEEComponentExportOperation.java:91)
    at org.eclipse.jst.j2ee.internal.archive.operations.ComponentExportOperation.export(ComponentExportOperation.java:191)
    at org.eclipse.jst.j2ee.internal.archive.operations.ComponentExportOperation.execute(ComponentExportOperation.java:136)
    ... 10 more

它仍然会生成 WAR,但我猜它有错误,这就是我No-Content type in header在消费时得到的原因。那么现在的问题是,为什么导出时会抛出这个错误?同样,与其他 Web 服务完全相同。

编辑三:

我已经打开了一个相关的问题,该问题遵循我的进步。仍然不知道问题是什么,但正如我在评论中解释的那样,我怀疑这与认可的标准机制有关

4

0 回答 0