`

Tomcat 项目迁移至weblogic 10笔记(转)

阅读更多
这几天在WEBLOGIC上部署应用程序发现了不少问题,找了下面的这个帖子感觉不错,记录一下~~~

OS:Windows XP

WebApp Server:Tomat5.5 WebLogic server 10 (中文版)

IDE:Bea workshop for weblogic platform。
一.IDE注意事项

创建动态web项目,选择是否共享j2ee库,如果共享,则需要域的共享库里面包含项目所需的库,比如beeHive netUi;
不共享,则将所需的库拷贝到WEB-INF/lib目录,并自动创建相关配置文件于WEB-INF下

如果访问页面时出现如下错误:
index.jsp:2:4: 使用该 URI 无法找到标记库。可能是因为 URI 不正确或解析 .tld 文件时出错。
<%@taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>

请删除多余的配置文件,或者重新建立一个工程,在向导第二页选择好正确的配置。

二.WebLogic基础知识

一个域可以包括多个服务器,应用程序依赖于某个服务器,通过部署-〉某应用程序-〉目标 来配置
wl_server是weblogic默认域,通过开始菜单-〉Bea products->tools->Weblogic Server来启动
要创建自己的域,则可以通过开始菜单-〉Bea products->tools->Configuration wizard来创建
登录地址:http://localhost:7001/console/login/LoginForm.jsp
登录用户密码:weblogic/weblogic
1.部署war之后,测试时发生错误:
Error   503--Service   Unavailable  
From   RFC   2068   Hypertext   Transfer   Protocol   --   HTTP/1.1:
.....
解决办法:一般是在刚刚激活更改后,就进行测试,还需要将该应用程序启动,状态为“活动”之后再测试就可以了。


2.连接池测试时出错:

Warning! Connectivity to backend database not verified. This is either because required connection pool attribute "TestConnectionsOnReserve" has not been enabled, or an invalid value has been specified for attribute "TestTableName". Please check the server log for more details..

配置连接缓冲池,在“高级”中选中“保留时测试连接”即可。此时需要先激活更改再进行测试。否则还会报错。

3.jdbc jndi错误:
javax.naming.NameNotFoundException: Unable to resolve 'jdbc_fbysss. Resolved ''; remaining name 'jdbc_fbysss'

首先要在控制台中点击左边的控制栏中的服务->JDBC新建一个数据源,数据源名称无所谓,jndi name一定要注意,比如取名叫jdbc_fbysss,而且,jdbc源必须依赖于一个server。否则无法启动。

对于Spring项目,修改applicationContext.xml的dataSource,(Tomcat的连接池在这里就不需要了)。

<!-- 数据源缓冲池 --> <bean id="dataSource"   class="org.springframework.jndi.JndiObjectFactoryBean">   
        <property name="jndiName" value="jdbc_fbysss"/><!--两者要一样-->
        <property name="resourceRef">
           <value>false</value>
        </property>  
        </bean>


4.xml校验错误

(1)hbm.xml

org.dom4j.DocumentException: unknown protocol: platform. Nested exception: unknown protocol: platform
这个经检查是workshop导出时 ,hbm.xml文件生成错误。修改过来就好了


(2)struts-config.xml

正式部署时出现异常:
ERROR Digester        []: Parse Error at line 2 column
15: Document root element "struts-config", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "struts-config", must match
DOCTYPE root "null".
需要在struts-config.xml中第二行加入<!DOCTYPE   struts-config   PUBLIC   "-//Apache   Software   Foundation//DTD   Struts   Configuration   1.2//EN"   "http://struts.apache.org/dtds/struts-config_1_2.dtd">


5.ServletApi实现不一致情况

发现一个奇怪的现象,tomcat中,一个servlet的子类,如果没有声明init方法,会自动执行父类的init方法,而weblogic不会。
解决办法是显式声明init,super.init();

6.莫名其妙空指针错误

完整错误信息:
java.io.FileNotFoundException: F:\bea\wlserver_10.0\samples\domains\workshop\servers\cgServer\tmp\_WL_user\prj_fbysss\mlh5uz\war (拒绝访问。)
        at java.io.FileInputStream.open(Ljava.lang.String;)V(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at workshop.util.filesystem.file.WlFileSystem.getInputStream(WlFileSyste
m.java:148)
        at workshop.util.filesystem.FS.getInputStream(FS.java:262)
        at javelin.jsp.JspParser.readStaticInclude(JspParser.java:3261)
        at javelin.jsp.JspParser.parseStaticInclude(JspParser.java:3198)
        at javelin.jsp.JspParser.processImplicitIncludes(JspParser.java:3289)
        at javelin.jsp.JspParser.jspParse(JspParser.java:703)
        at javelin.jsp.JspParser._parse(JspParser.java:504)
        at javelin.jsp.JspParser.parse(JspParser.java:497)
        at javelin.jsp.JspAnalyzer.parseFile(JspAnalyzer.java:113)
        at javelin.jsp.JspAnalyzer.parse(JspAnalyzer.java:101)
        at javelin.ProxySourceFile.parse(ProxySourceFile.java:117)
        at javelin.SourceFile.getAst(SourceFile.java:542)
        at javelin.SourceFile.getAst(SourceFile.java:516)
        at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:215)
        at javelin.SourceFile.codeGen(SourceFile.java:310)
        at javelin.client.ClientUtilsImpl$CodeGenJob.run(ClientUtilsImpl.java:11
05)
        at javelin.client.Job.performJob(Job.java:81)
        at javelin.client.ThreadPool$WorkerThread.run(ThreadPool.java:215)
<2008-8-23 下午07时15分11秒 CST> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.
internal.WebAppServletContext@36b25e - appName: prj_fbysss, name: 'prj_fbysss', context-path: '/prj_fbysss] Root cause of ServletException.
java.lang.NullPointerException
        at javelin.jsp.JspAnalyzer.parse(JspAnalyzer.java:104)
        at javelin.ProxySourceFile.parse(ProxySourceFile.java:117)
        at javelin.SourceFile.getAst(SourceFile.java:542)
        at javelin.SourceFile.getAst(SourceFile.java:516)
        at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:215)
        Truncated. see log file for complete stacktrace
>

最后发现是web.xml中<include-coda/>一句不对,去掉就好了,很怪异。
   <taglib>
   <taglib-uri>http://www.sss.com/select</taglib-uri>
   <taglib-location>/WEB-INF/tlds/select.tld</taglib-location>
     </taglib>
   <taglib>
   <taglib-uri>http://www.sss.com/tree</taglib-uri>
   <taglib-location>/WEB-INF/tlds/tree.tld</taglib-location>
     </taglib>    
   <!--web 项目配置-->
   <jsp-property-group>
    <description>
     WEB项目配置
    </description>
    <display-name>JSPConfiguration</display-name>
    <url-pattern>*.jsp</url-pattern>
    <el-ignored>false</el-ignored>
    <page-encoding>gbk</page-encoding>
    <scripting-invalid>false</scripting-invalid>
    <!--这句居然引起webloic错误!!!! include-coda/-->
   </jsp-property-group>
</jsp-config>



7.类冲突问题
(1)JSTL解析失败

index.jsp:1:1: validator 类 "org.apache.taglibs.standard.tlv.JstlCoreTLV" 失败,出现如下异常: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory"。
<%@page contentType="text/html;charset=gbk" language="java"%>

项目属性-〉项目构面中的设置将记录在.setting/org.eclipse.wst.common.project.facet.core.xml文件中。
最后是把prefer-web-inf-classes设置为false就可以了。

(2)HQL语句执行失败

org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
这种情况是包版本冲突,必须设置prefer-web-inf-classes设置为true。

这样一来,有的包需要true,有的需要false,怎么办?Weblogic的确够恶心的。JSTL的包都已经放webapp下了,设置prefer-web-inf-classes设置为ture还不行,只好采取以下稍显麻烦的方法:

在workshop开发环境下,启动的服务器目录是
F:\bea\wlserver_10.0\samples\domains\workshop\bin
修改启动脚本startWebLogic.cmd
找到set CLASSPATH=%SAVE_CLASSPATH%,在后面加入
@REM sss added
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6rc1.jar;
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%

其中,antlr-2.7.6rc1.jar包需要拷贝到F:\bea\wlserver_10.0\server\lib下。
正式发布的时候,需要修改对应域目录下的启动脚本
比如f:\bea\user_projects\domains\fbysssDomain\bin\startWebLogic.cmd


8.部署问题
部署时出现如下错误:
<2008-8-23 下午07时37分42秒 CST> <Warning> <Deployer> <BEA-149124> <

Failures were detected while initiating redeploy task for application 'prj_fbysss'. Error is: '
[Deployer:149163]The domain edit lock is owned by another session in non-exclusi
ve mode - this deployment operation requires exclusive access to the edit lock a
nd hence cannot proceed.'>
解决:进入http://localhost:7001/console,释放配置,再次部署即可。


注:更新war:必须在删除该应用,并激活更改之后才能覆盖。
但是用war方式,获取资源路径的方法和tomcat不同,存在臭名昭著的getRealPath等问题,移植困难,所以用目录方式部署比较好。

具体方法:先把war解压,然后在weblogic控制台里面选择目录部署。

分享到:
评论

相关推荐

    tomcat工程迁移至weblogic文档

    ### Tomcat工程迁移至WebLogic的关键步骤与注意事项 在企业级应用开发中,根据业务需求和技术选型的变化,有时需要将部署在Tomcat上的应用程序迁移到WebLogic服务器上。这一过程涉及多方面的调整与优化,确保应用能...

    weblogic项目移植到tomcat,配置说明

    WebLogic 项目移植到 Tomcat 配置说明 在进行 WebLogic 项目移植到 Tomcat 之前,需要确保已经成功安装了 Tomcat。下面将对 WebLogic 项目移植到 Tomcat 的配置进行详细说明。 配置 Tomcat 1. 在 Tomcat 安装目录...

    项目框架从tomcat到weblogic

    3. Jar 包冲突:项目框架从 Tomcat 移植至 WebLogic 可能会出现 Jar 包冲突的现象,需要预加载 Jar 包。预加载 Jar 包可以解决类加载问题。 4. 配置文件修改:由于 WebLogic 不支持通配符,因此需要在配置文件中将...

    技术文章(迁移问题解决方案)-从WebLogic 6_1迁移到 WebLogic 8_1.mht

    技术文章(迁移问题解决方案)-从WebLogic 6_1迁移到 WebLogic 8_1.mht

    Nginx实现tomcat与weblogic集群的负载均衡及故障处理

    在IT行业中,构建高效、可靠的Web服务架构是至关重要的,特别是在高并发和高可用性需求的场景下。本文将详细讲解如何使用Nginx作为负载均衡器,实现对Tomcat和WebLogic集群的负载均衡以及故障处理。我们将遵循...

    tomcat 调用weblogic EJB

    ### Tomcat调用WebLogic EJB的实现方法与步骤 #### 概述 在实际的开发环境中,有时候需要实现不同应用服务器之间的交互。比如,在Tomcat应用服务器中调用部署在WebLogic服务器上的EJB(Enterprise JavaBeans)组件...

    tomcat_Jboss_weblogic区别、容器的作用

    Tomcat是一种免费的开放源代码的Web应用服务器,它是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat服务器具有许多优点,...

    weblogic集成多个Tomcat服务,自动分配tomcat服务,80端口访问

    本示例将详细介绍如何使用Oracle WebLogic Server(WLS)集成多个Apache Tomcat服务,实现自动分配Tomcat实例处理请求,并确保通过80端口进行访问。这一过程涉及到集群配置、负载均衡以及端口映射等多个关键知识点。...

    WebLogic、WebSphere、JBOSS、Tomcat之间的区别

    WebLogic、WebSphere、JBOSS、Tomcat 之间的区别 在中间件领域中,WebLogic、WebSphere、JBOSS、Tomcat 等四大应用服务器之间存在着很大的区别,今天我们将从多个角度来比较它们之间的差异。 1. 产品介绍 ...

    Weblogic学习笔记

    ### Weblogic学习笔记:安装与配置详解 #### 一、Weblogic 9.2的安装流程 Weblogic的安装过程相对直接,对于初次接触的开发者来说,也较为友好。整个安装过程中,用户只需要关注几个关键步骤,其余部分可遵循默认...

    Tomcat和weblogic中文乱码问题解决方案

    Tomcat和WebLogic中文乱码问题解决方案 在 Java Web 开发中,中文乱码问题一直是困扰开发者的主要问题之一。 Tomcat 和 WebLogic 是两个常用的 web 服务器,都是支持 Servlet 和 JSP 的。然而,在使用这些服务器时...

    Tomcat-JBoss-Weblogic-Jetty的区别和介绍

    Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于...

    服务器tomcat和weblogic区别[参考].pdf

    Tomcat是一个免费的开放源代码的Web应用服务器,由Apache软件基金会Apache Software Foundation的Jakarta项目中的一个核心项目。它是由Apache、Sun和其他一些公司及个人共同开发的。由于有了Sun的参与和支持,最新的...

    weblogic10.3.3之后版本升级至weblogic10.3.6文档.docx

    - **迁移**:将应用程序或配置从其他平台(例如Tomcat)迁移到WebLogic Server的过程。 - **兼容性**:指一个在某个WebLogic Server版本上构建的应用程序能够在另一个版本上运行而不需重建的能力。 #### 三、适用...

    让Workshop for WebLogic 10gR3支持tomcat 6

    总之,让Workshop for WebLogic 10gR3支持Tomcat 6涉及到多个步骤,包括安装Tomcat、配置Workshop、安装适配器、调试设置以及部署和测试应用。这展示了IT专业人士如何在不同环境中灵活适应和集成不同的软件组件,以...

    weblogic 可迁移目标讲解

    在WebLogic Server中,“可迁移目标”(Migratable Target)是一项重要的高可用性和容错机制,它允许应用程序和服务在集群中的不同节点之间透明地移动,以实现负载均衡、故障恢复或资源优化。以下是对WebLogic可迁移...

    tomcat、weblogic、jboss的区别

    Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,它是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。Tomcat ...

Global site tag (gtag.js) - Google Analytics