我在websphere 8.5上部署了一个项目。但是,由于项目中的jar版本错误以及websphere默认提供的错误,某些类会产生冲突。
任何人都可以帮助指出解决冲突的机制。
我在weblogic中做了类似的事情,它在welogic.xml中提供了从项目中排除/包含jar的选项。
答案 0 :(得分:0)
这是"隔离共享库的用例" WebSphere服务器中的功能。对于您需要使用自己的版本而不是使用服务器提供的版本的任何技术,将必要的jar放入应用程序外的某个目录中,创建指向该位置的共享库,选择"使用孤立的类装载机"库配置中的选项,并将库与需要它的应用程序相关联。应用程序将在委托给其父级加载器之前搜索隔离的库类加载器,并且将找到那些类而不是服务器提供的版本。
一些注意事项:这应该仅用于您100%确定需要自己的版本而不是服务器的技术。 "父母最后"孤立的共享库使用的类加载样式包括类加载器之间的一些冲突风险,并且避免它(通过使用服务器提供的API)通常是更安全的选择。
另请注意,并非一切都可以被覆盖。例如,Servlet,EJB和JPA API如果包含在隔离的共享库中,将破坏应用程序启动,因为服务器容器在处理应用程序对象时需要API类的一致版本。此外,如果没有相关的实现,您就无法使用任何技术的API - 这通常是由多个API版本的重复可见性引起的VerifyError或LinkageError的一个配方。