加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

LINUX实操:WebLogic 部署问题定位与解决

发布时间:2020-12-13 17:51:22 所属栏目:Linux 来源:网络整理
导读:《LINUX实操:WebLogic 部署问题定位与解决》要点: 本文介绍了LINUX实操:WebLogic 部署问题定位与解决,希望对您有用。如果有疑问,可以联系我们。 weblogic?做为商用中间件在(EJB、jndi 数据源、日志治理、内存治理、资源配置治理...) ?是一些开源免费小

《LINUX实操:WebLogic 部署问题定位与解决》要点:
本文介绍了LINUX实操:WebLogic 部署问题定位与解决,希望对您有用。如果有疑问,可以联系我们。

weblogic?做为商用中间件在(EJB、jndi 数据源、日志治理、内存治理、资源配置治理...) ?是一些开源免费小型容器无法望其项背的.

? ?weblogic?最早由 weblogic?Inc. 开发,后并入 BEA ?公司,最终 BEA 公司又并入 Oracle 公司.

? ?weblogic 是用于开发、集成、部署和管理年夜型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器.

? ?因此 weblogic?一般做为项目上线发布和部署的服务器,而当地研发时大多会选用 Tomcat/Jetty.... 小型容器.

? ?这样难免会出现问题,当地运行良好的 web 程序,部署在?weblogic?时会出现这样或那样的问题.

? ?绝大一部分问题都是因为 weblogic 依赖的 jar 与项目中的 jar 冲突(相同 jar 分歧版本)或 weblogic 不支持项目 jar 所导致的.

? ?当部署 weblogic 出现问题时(本身总结三板斧):

? ?1. 确认公司使用的 weblogic 版本并翻阅官网对应 weblogic 版本所支持的尺度;

? ?2. 对照 weblogic 失足日志确定冲突 jar 或确定该 webloigc 不支持的 jar;

? ?3. 对于呈现冲突的 jar 在项目 WEB-INFO 目录下添加 weblogic.xml 配置文件,其中申明要预先加载的项目 jar;

? ?4. 对于呈现该 webloigc 版本不支持的 jar,升级 weblogic 版本,或降低项目使用的 jar 版本.

1. 确定 weblogic 版本并查看相应支持的尺度

? ?知已知彼才能百战不殆,因?weblogic 小版本较多且版本之间差异较大.

? ?查看 weblogic 版本有很多办法,最直接方式是询问安装 weblogic 的同事,或者登录到 linux 像下面这样.

LINUX实操:WebLogic 部署问题定位与解决

? ?获悉部署的版本后,去瞅瞅 oracle weblogic 官网,那里的文档材料是最全面也是最权威的.

? ?http://www.oracle.com/technetwork/middleware/weblogic/documentation/index.html

? ?

? ?找到对应版本点 view Library 跳转进去,里面是整个版本的概览,咱们的关注点应该是该 ?weblogic 版本支持的尺度.

? ?

? ?里面有详细的该 weblogic 支持的 java、web Service、一些杂七杂八的标准,好比 JDK、EL、Servlet、JAX-RS、JAX-WS....

2. 对照部署报错日志确定问题并解决

? ?有了上述具体的支持标准,配合部署报错的具体类和办法,就可以对症下药.

? ?下面列举部署 weblogic 时常见的几个报错异常(还有很多遇到在弥补):

? ?1) java.lang.UnsupportedClassVersionError: ?Unsupported major.minor version 51.0 (weblogic Jdk 版本与项目 jdk 版本纷歧致)

? ?2)?request.getRealPath() 为 null (?servlet-api.jar 当地和 weblogic 有差异,使用类加载?Thread.currentThread().getContextClassLoader() 获取相对路径)

? ?3)?ClassNotFoundException:org.hibernate.hql.ast.HqlToken (weblogic 已依附较早版本的 antlr.jar)

? ?4) 统一设置装备摆设 tomcat 和 weblogic 上的数据源 jndi :?<jee:jndi-lookup id="dataSource" jndi-name="jdbc/user" />

? ?5)?java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory (移除项目 xml-apis.jar)

? ?6 )weblogic NoClassDefFoundError: Could not initialize class sun.awt.X11Graphi(?改动?startWebLogic.sh export?JAVA_OPTIONS=-Djava.awt.headless=true)

? ?办理此类问题的方式大体有三种,遇到部署问题时也可以自己都实践一下.

a. 删除 weblogic 下冲突 jar 文件夹:

? ?(1)删除 /bea/weblogic12.1.3/server/lib/weblogic.jar中的冲突的文件夹;

? ?(2)copy 冲突的 XXX.ja r到 /bea/weblogic12.1.3/server/lib,?重启weblogic.

b. ?通过修改启动脚原来优先加载某些 jar

? (1)将冲突的 jar 包拷贝到 ${DOMAIN_HOME}/lib 目次下.

? (2)${DOMAIN_HOME}/bin 下找到 startWeblogic.sh 文件用文本编纂器将其打开,并在里面加入如下内容:

export first_classpath=${DOMAIN_HOME}/lib/xxxx.jar  
SAVE_CLASSPATH="${first_classpath}:${CLASSPATH}"  

c. 在利用中通过 weblogic .xml 的配置,优先加载利用的 jar

? ?因 weblogic 版本不消,weblogic 的配置项会有差异,不要盲目从网上 copy.

? ?官网版本描写(其他版本将1213换一下即可):http://docs.oracle.com/middleware/1213/wls/WBAPP/weblogic_xml.htm#WBAPP571

? ?关注此中的?prefer-application-resources/prefer-application-packages(预先加载应用对应 jar ) 节点的配置:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-packages>
            <package-name>预先加载项目 lib 中的包名,支持通配符</package-name>
            <package-name>com.sun.faces.*</package-name>
            <package-name>com.bea.faces.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>

? 办理方案 a/b/c 中,c 方案无异是最优解,做为生产环境的 weblogic 可能会部署多个应用,不太可能让你随便重启.

? 方案 a,b 会破坏 weblogic 的整体性,可能导致其他部署在 weblogic 上的应用呈现问题.

本文永远更新链接地址

学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流咨询。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读