如果服务器上的 Jboss 实例的行为与本地相同实例的行为不同,要检查什么?

What to check if Jboss instance on server behaves differently than the same instance locally?

我有一个 Java 遵循相当标准架构的 SOAP Web 服务:

SOAP 客户端联系 Jboss 实例上的 WebService 运行ning(无论是 运行ning 本地还是远程),WebService 调用(在 RMI 中)远程应用程序,它以一些数据和 returns 响应请求者。

我的问题大致如下:

由于它适用于本地实例,因此我对如何解决此问题没有太多想法。这是我到目前为止尝试过的:

有人知道我该如何调试此类问题吗?我忘记检查任何配置文件了吗?

经过几个小时的挣扎,我终于自己弄清楚了问题所在。

虽然这看起来是一个简单的错字,但它让我浪费了很多时间,并且显示了 Jboss 的远程实例和本地实例之间有趣的行为差异,所以我发布了一个答案以备不时之需有时有人会犯同样的错误。

我开发的新@WebMethod是这个:

@WebMethod
@WebResult(name = "ProductEvaluation")
public ProductEvaluations myAPIRequest(@WebParam(name = "XmlProducts") final XmlProducts xmlProducts,
    @WebParam(name = "ConnectedToRealtime") final boolean connectedToRealtime,
    @WebParam(name = "Timeout") final Timeout timeout) throws ProductEvaluationFault, TimeoutFault, ProductConfigurationFault, SecurityFault {
    try {
        // some stuff here...
        return result; //result contains what I want
    } catch (SecurityException e) {
        throw new SecurityFault(e.getMessage());
    }
}

正如你所注意到的(我实际上花了 4 个小时才注意到它,所以它可能不是那么明显):

  • 函数的 return 类型是 ProductEvaluations(表示 ProductEvaluation 的列表),这也是 wsdlxsd
  • 但是,我忘记了 @WebResult(name="ProductEvaluation")
  • 上面注释中的 s

根据我的经验,因此,我注意到:

  • 当Jboss 在本地运行时,注解@WebResult 将被忽略,结果无论如何都是return。
  • 然而,当Jboss远程运行时,这个映射就完成了。因此,由于我 returning ProductEvaluations(带有 s)但说 @WebResultProductEvaluation(没有 s),然后远程服务器没有映射任何东西,响应是空的。