gpt4 book ai didi

java - 为什么 Java EE 6 需要为资源适配器实现 equals() 和 hashCode()?

转载 作者:搜寻专家 更新时间:2023-11-01 00:51:46 25 4
gpt4 key购买 nike

我正在努力将代码从 JBoss 5.1 升级到 JBoss 7.1,但如果这些方法没有在资源适配器中显式实现,它就会失败。我了解各自的概念,也知道两者之间的契约。我不是在问如何实现它们或它们的含义。我特别询问为什么必须为 Java EE 6 代码(在本例中为 JBoss AS 7.1)实现它们。

是否有充分的理由对它们进行大量思考,或者仅仅拥有:

boolean equals(Object obj) { return super.equals(obj) ; }
int hashCode() { return super.hashCode() ; }

最佳答案

我认为这是因为跟随

结帐ManagedConnectionFactory这里。

看到这是一个接口(interface),有 equals()hashCode() 方法。所以Basic java,第一个实现接口(interface)的具体类必须定义接口(interface)的所有方法。你的资源适配器必须实现,所以它必须定义这些方法

引用A resource adapter needs to implement ManagedConnectionFactory这里。

根据上述问题,根据 JCA 1.6 规范,我们需要提供实现

A resource adapter must provide implementations of the following interfaces:

javax.resource.spi.ManagedConnectionFactory
javax.resource.spi.ManagedConnection
javax.resource.spi.ManagedConnectionMetaData

1.5 不是这种情况

这就是为什么它在验证期间出错

JCA validator 在 1.6 版中变得更加严格,因此出现错误。

关于这一点没有什么很清楚,互联网上有很多关于同一问题的问题和帖子。我找到的最佳解释是提供连接工厂的“要求”。

此外,如果您需要绕过错误,则需要切换到 JCA 1.5 或禁用 1.6

关于java - 为什么 Java EE 6 需要为资源适配器实现 equals() 和 hashCode()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com