我们最近将hibernate从4.0.1
升级到4.2.8.Final
。
Hibernate.4.2.8.Final
取决于javassist-3.18.1-GA
。不幸的是,websphere 8.5.5并没有附带最新的javassist,但它不是我的问题。我试图强制websphere采取我的javassist jar,但我失败了(由于某种原因,它总是从${WAS_INSTALL_ROOT}/plugins
加载)。
我尝试了什么?
${WAS_INSTALL_ROOT}/lib/ext
但不使用${WAS_INSTALL_ROOT}/plugins
中替换javassist.jar,那么应用程序就开始工作了,但这不是一个好的解决方案,因为其他Web应用程序可能依赖于旧的javassist 我的问题
如何在Websphere 8.5.5中使用(或注入或引用)最新的javassist jar?
这#blog让我很快就能解决问题。
答案 0 :(得分:2)
你把父母放在哪里,在控制台的哪个窗口?
因为控制台中有两个位置将父级放在最后,一个位于应用程序级别,另一个位于WAR级别,这是您要选择的位置。
将“每个WAR文件的类加载器”放入应用程序中,我相信从您选择该选项的屏幕内部,单击WAR并将WAR级别的类加载器策略设置为父级最后一个:
我认为路径是这样的(现在没有控制台):
申请 - >企业应用 - > application_instance - >网络模块 - > Web Module_instance
查看this,看看有两个地方可以设置类加载器策略,如果您找到了设置并且是否有效,请告诉我,否则会抛出新错误。
有时当我们切换设置时,我们会发现新的错误,因为其他的jar从服务器读取而不是WAR,例如bean验证错误等。如果你得到一个不同的错误,非javassist相关,可能是由于你总是可以在一个新问题上发帖。
答案 1 :(得分:2)
这可以通过将新版本的javaassist添加为共享库来解决。详细信息如下所述 [http://www-01.ibm.com/support/docview.wss?uid=swg27006159#usingserver][1]
应该针对在服务器配置中定义的新类加载器分配共享库。此类加载器的类加载策略应为PARENT_LAST
答案 2 :(得分:0)
将WAR类加载器策略更改为模块。
答案 3 :(得分:0)
问题的解决方案是PARENT_LAST
,但我在应用程序设置页面(应用程序 - >应用程序类型 - > WebSphere企业应用程序 - > * application_name * - >类加载和更新检测)中进行了更改。
不幸的是,这不是放置PARENT_LAST
选项的正确位置。因为我的应用程序是web模块(准确的war文件;))我会在{Applications - > Application Types - > WebSphere enterprise applications - > * Application_Name * - > Manage Modules中添加PARENT_LAST
选项 - > 模块名称 - >类加载器顺序)。在我看到 jhadesdev 评论并特别是the link之前,我不知道这个选项。
@jhadesdev再次感谢。我总结了所有内容HERE
答案 4 :(得分:0)
当你的应用程序结构相当简单时,我认为使用war(孤立/父级最后一个类加载器)的实验可能会成功。在我的情况下,我们以完整的耳朵形式打包并且我们使用瘦小的战争 - 意味着实际的模块包含jpa / hibernate实体是一个完整的ejb-jar并且包装在耳朵顶层。我不确定如果这个模块(不是websphere专家)我可以轻松地使用类加载器
我的第二个问题是理想情况下,我希望在打包期间执行所有这些异乎寻常的类加载器策略设置,而不是在部署管理操作之后(意味着管理员在Websphere的面板中执行某些操作)。这种基于文件的方式存在,但它太复杂和丑陋的iMho,我责怪Websphere。
答案 5 :(得分:0)
这里有一个关于如何在WAS中更新javassist的小指南。这是使用WAS 8.0.0.1测试的。 WAS_HOME / plugins中的javassist.jar必须由来自http://search.maven.org/remotecontent?filepath=org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar的jar替换 保留旧的备份。 在Windows机器上调用WAS_HOME / profiles / PROFILE_NAME / bin / osgiCfgInit.sh,然后调用WAS_HOME / profiles / PROFILE_NAME / bin / clearClassCache.sh或* .bat文件。
感谢这篇文章,我发现了如何做到这一点:http://ramirezag.wordpress.com/2014/02/27/hibernate-4-2-8-and-websphere-8-5-5-1-issues/
答案 6 :(得分:0)
我们正在使用WAS 8.5.5和Hibernate 4.3.5,并且遇到了同样的问题。 将Java Assist添加为共享库确实对我们有用。
请注意,必须使用隔离的类加载器
创建共享库