WebLogic 部署项目,jar包冲突怎么解决?

枪炮玫瑰 发布于 2016/05/23 09:41
阅读 1K+
收藏 0

背景:

在tomcat部署,项目A一切运行正常。部署到WebLogic后,启动节点项目出现了异常,详情如下。

原始异常



初步判断问题出现的原因
weblogic 自带jar包和项目中的jar包冲突
百度得到集中方案

方案1

在项目的的WEB-INF添加 文件 weblogic.xml.
weblogic.xml内容为:

<?xml version="1.0" encoding="UTF-8"?> 
<weblogic-web-app 

 xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd 
 http://xmlns.oracle.com/weblogic/weblogic-web-app 
 http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd"> 

	<container-descriptor> 

	<prefer-web-inf-classes>true</prefer-web-inf-classes> 

	</container-descriptor> 

</weblogic-web-app> 



然后出现一下异常:

方案1的异常



这个时候,不知道怎么解决。于是还原配置文件。使用了第二种解决方案。

方案2:

在项目的WEB-INF目录下添加 weblogic.xml
内容为:

<?xml version="1.0" encoding="UTF-8"?>                                          
<weblogic-web-app                                                               
                                                                                
        xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"               
                                                                                
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                   
                                                                                
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                   
                                                                                
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd                               
                                                                                
http://xmlns.oracle.com/weblogic/weblogic-web-app                               
                                                                                
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd">    
                                                                                
    <jsp-descriptor>                                                            
                                                                                
         <!-- 每隔一段时间检查一次jsp,如果发现变更则自动加载。 -->                                    
                                                                                
         <page-check-seconds>30</page-check-seconds>                            
                                                                                
     </jsp-descriptor>                                                          
                                                                                
                                                                                
                                                                                
     <container-descriptor>                                                     
                                                                                
         <!-- 每隔一段时间检查一次servlet,如果发现变更则自动加载。 -->                                
                                                                                
         <servlet-reload-check-secs>30</servlet-reload-check-secs>              
                                                                                
                                                                                
                                                                                
         <!-- 每隔一段时间检查一次资源文件,如果发现变更则自动加载。 -->                                   
                                                                                
         <resource-reload-check-secs>30</resource-reload-check-secs>            
                                                                                
                                                                                
                                                                                
         <!-- 优先加载部分类,用于解决jar包冲突。 -->                                           
                                                                                
         <prefer-application-packages>                                          
                                                                                
             <!-- <package-name>javax.servlet.*</package-name> -->              
                                                                                
             <package-name>org.apache.*</package-name>                          
                                                                                
             <package-name>org.aopalliance</package-name>                       
                                                                                
             <package-name>schemas</package-name>                               
                                                                                
             <package-name>schemas.*</package-name>                             
                                                                                
             <package-name>mozilla</package-name>                               
                                                                                
             <package-name>com.sun.*</package-name>                             
                                                                                
             <package-name>net.*</package-name>                                 
                                                                                
             <package-name>antlr.*</package-name>                               
                                                                                
             <package-name>org.codehaus.*</package-name>                        
                                                                                
             <package-name>com.fasterxml.*</package-name>                       
                                                                                
             <package-name>javax.persistence.*</package-name>                   
                                                                                
             <package-name>org.jvnet.*</package-name>                           
                                                                                
             <package-name>org.apache.*</package-name>                          
                                                                                
             <package-name>javax.annotation</package-name>                      
                                                                                
             <package-name>javax.servlet</package-name>                         
                                                                                
             <package-name>javax.validation</package-name>                      
                                                                                
             <package-name>javax.ws.rs</package-name>                           
                                                                                
             <package-name>javax.xml.bind</package-name>                        
                                                                                
             <package-name>javax.servlet.jsp.jstl</package-name>                
                                                                                
             <package-name>javax.sql</package-name>                             
                                                                                
         </prefer-application-packages>                                         
                                                                                
     </container-descriptor>                                                    
                                                                                
 </weblogic-web-app>                                                            



方案2的异常

方案3

在第二种方案中:修改了配置文件的内容。除了另外的异常。
内容:

<?xml version="1.0" encoding="UTF-8"?>                                              
<weblogic-web-app                                                                   
                                                                                    
  xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"                         
                                                                                    
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                             
                                                                                    
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                             
                                                                                    
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd                                   
                                                                                    
http://xmlns.oracle.com/weblogic/weblogic-web-app                                   
                                                                                    
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd">        
                                                                                    
  <jsp-descriptor>                                                                  
                                                                                    
     <!-- 每隔一段时间检查一次jsp,如果发现变更则自动加载。 -->                                            
                                                                                    
     <page-check-seconds>30</page-check-seconds>                                    
                                                                                    
     </jsp-descriptor>                                                              
                                                                                    
                                                                                    
                                                                                    
     <container-descriptor>                                                         
                                                                                    
     <!-- 每隔一段时间检查一次servlet,如果发现变更则自动加载。 -->                                        
                                                                                    
     <servlet-reload-check-secs>30</servlet-reload-check-secs>                      
                                                                                    
                                                                                    
                                                                                    
     <!-- 每隔一段时间检查一次资源文件,如果发现变更则自动加载。 -->                                           
                                                                                    
     <resource-reload-check-secs>30</resource-reload-check-secs>                    
                                                                                    
                                                                                    
                                                                                    
   <!-- 优先加载部分类,用于解决jar包冲突。 -->                                                     
                                                                                    
   <prefer-application-packages>                                                    
                                                                                    
       <!-- <package-name>javax.servlet.*</package-name> -->                        
                                                                                    
       <package-name>org.apache.commons.lang.*</package-name>                       
                                                                                    
       <package-name>org.apache.xmlbeans.*</package-name>                           
                                                                                    
       <package-name>antlr.*</package-name>                                         
                                                                                    
       <package-name>javax.persistence.*</package-name>                             
                                                                                    
       <package-name>javax.jws.*</package-name>                                     
                                                                                    
       <package-name>org.apache.cxf.*</package-name>                                
                                                                                    
                                                                                    
                                                                                    
   </prefer-application-packages>                                                   
                                                                                    
     </container-descriptor>                                                        
                                                                                    
 </weblogic-web-app>                                                                



方案3的异常



接下来就不知道该怎么解决了,这是第一次在WebLogic部署项目,如果有哪位神遇见过,知道怎么解决。还望给指导指导,谢谢。
加载中
0
枪炮玫瑰
枪炮玫瑰

针对我自己的业务:

    我把最初报错的 jar,对应的项目中的相关包,删除了

       

    同时修改了 WebLogic 加载jar包的顺序:

    添加配置文件  WEB-INF / weblogic.xml

    内容如下:

    

<?xml version="1.0" encoding="UTF-8" ?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
	<container-descriptor>
		<index-directory-enabled>true</index-directory-enabled>
		<prefer-web-inf-classes>true</prefer-web-inf-classes>
	</container-descriptor>
</weblogic-web-app>



然后问题就解决了。最后还是要删除jar包。

0
飘逸的逸
飘逸的逸
方案2的异常 - 这个确定不是JDK版本的问题?
枪炮玫瑰
枪炮玫瑰
不是JDK版本的问题,版本我已经看过了。 目前的猜测是,我修改了jar包的加载顺序引起的。但是再往深了,就不知道什么原因了
0
sa_2007
sa_2007
weblogic 加载jar包有一个优先级的 
返回顶部
顶部