Glassfish 3.1.2.2 JPA问题与EclipseLink 2.4.2升级解决方案
需积分: 0 51 浏览量
更新于2024-08-04
收藏 250KB DOCX 举报
本文档主要讨论了在 Glassfish 3.1.2.2 环境中使用 EclipseLink JPA 遇到的问题以及解决方法。问题集中在 TcUser 实体类中,当尝试注入多个字段(如 company 等)或者处理额外的 collection 关系时,JPA 注入过程中未能获取到这些字段的值,导致运行时抛出空指针异常 (NPE)。
问题产生的原因被推测可能是 Glassfish 的 ClassLoader 在加载对象时正确,但在 JPA 进行元数据分析时,由于 JPAmetadata 是基于 jar 文件中的 tcUser.class 来确定字段的,而这些 jar 文件中的tcUser 类定义可能不完整,没有包含所有所需的字段,从而导致 SQL 查询语句中的字段缺失。
为了解决这个问题,作者提供了以下步骤:
1. 找到 Glassfish 下的 modules 路径,筛选出所有以 "org.eclipse.persistence.*.jar" 匹配的 EclipseLink 相关文件。这可能包括旧版本的 JAR 文件,如 2.4.2 版本。
2. 将旧版 EclipseLink JAR 替换为较新版本,建议使用 2.5 版本或更新。可以从 EclipseLink 官网下载:<http://www.eclipse.org/eclipselink/downloads/index.php>。确保下载的是 OSGI bundles 文件,因为 Glassfish 可能需要特定的打包格式。
3. 解压新版本的 EclipseLink,并将其中与 Glassfish 需要相关的 org.eclipse.persistence.*.jar 文件复制到 Glassfish 的 modules 路径下。根据经验,至少需要复制 8 个或更多的相关 JAR 文件,具体取决于 Glassfish 的配置需求。
4. 在进行这些操作之前,确保 Glassfish 已经关闭,以防缓存冲突。重启 Glassfish 并清除 domain 下的 osgi-cachefolder 路径下的 felix 目录,以清理旧的缓存。
5. 新的 EclipseLink JAR 文件应存储在一个共享位置,例如 "\\192.168.204.10\TCCI_File\軟體處\Public\Java\Other\eclipselink\",便于管理。
遵循以上步骤后,理论上应该能够解决 Glassfish 3.1.2.2 上的 JPA 问题,使得 TcUser 类及相关关系能够在运行时得到正确的注入和处理。请注意,这个解决方案可能因实际情况和 Glassfish 版本的不同而有所调整,所以在实施时需根据具体环境进行适当验证。
点击了解资源详情
104 浏览量
点击了解资源详情
132 浏览量
2022-08-08 上传
373 浏览量
2019-05-16 上传
219 浏览量
2022-03-11 上传
本本纲目
- 粉丝: 31
- 资源: 293
最新资源
- 易语言超级列表框进度条
- CircleFun
- easy-tips:使用Go&PHP的代码职业中的一些提示:partying_face::partying_face::partying_face:
- 动画使图像实现动画效果
- React-Authentication-Burj-Al-Arab
- MT4跟单软件_mt4跟单_跟单_mt4跟单_跟单EA_ea
- 根据hostname自动获取目标设备的IPv4和Ipv6地址,并申请socket的模块
- 易语言超级列表框转HTML
- postcss-atcss-constant:ACSS禁止规则级联的模块
- XcodeProj::memo:读取,更新和编写Xcode项目
- KiLib-OSS:KiLib开源
- 易语言超级列表框读取自定义的配置内容
- PiBoom:通过树莓派上的 GPIO 按钮控制 MusicBox
- rentry:命令行中的Markdown pastebin
- 1click-calculator
- 精品图片站