admin 管理员组文章数量: 1184232
2024年6月4日发(作者:学生个人网页制作免费)
将应用部署到weblogic10及oracle linux时遇到的问题
公司一个项目准备在这几天上线,在用户现场搭建好服务器运行环境后,我们的主要工作就是将应
用移植到新的环境中。
部署环境介绍 开发环境介绍
操作系统 Oracle windows7/windowsxp
Enterprise-R5-U5-Server-x86_6
中间件 Weblogic server 10.3 tomcat 6
JDK jdk1.6 jdk1.6
J2EE SDK 5.0 5.0
数据库 Oracle Oracle
在将tomcat环境下开发的应用移植到weblogic下的过程中遇到了各种问题,特在此记录。
一、在一开始时准备将web应用打成war包,使用weblogic管理服务器安装,遇到了第一个问题
错误一:
意外的异常 在处理请求时出现意外的异常情况
消息:
堆栈跟踪: interException
at App(:256)
at 0(Native Method)
at (:39)
省略数千字……………
错误二:
emoryError: unable to create new native thread
问题分析:
这些错误都是在文件上传时,因为我们的工程较大,导致虚拟交换内存不足引起的,将修
改weblogic的虚拟内存调大后,解决了问题。
解决办法:
找到weblogic启动文件 ,由于该文件实际上又调用了
bin/文件,所以真正要改的是(在我这里该文件位于
/Middleware/user_projects/domains/base_domains/bin)
将PermSize 和MaxPermSize调整到 256和 512(按实际需要来调)
二、这时候,我们这样可以没问题了吧,谁知一部署,第二个问题来了
错误:
lStateException: Cannot set web app root system
property when WAR file is not expanded
问题分析:
出现这个原因是因为部署的时候使用的是war包, weblogic部署应用不像tomcat先将war
解压在启动,而是直接使用war启动。因为我们在很多JSP和Servlet文件中使用了如:
lPath("/")等类似写法,因为在war中的文件时没有真实路径的,
所以getRealPath("/")取出来的都是意向不到的值,例如null。
解决办法:
由于用这种写法获得web服务器路径的地方很多,一个个去换显然不是一个很好的办法,而且直
接使用war部署对后续的应用更新也比较麻烦,所以准备采用另外一种部署方式,就是文件目录部署。
三、文件目录部署
使用文件目录部署指的是用weblogic管理服务器安装,直接指定本地的应用文件夹,只要
该文件夹下面有包含,就可以被选中安装。
所以接下来就是建立应用程序的安装目录。
在区别于weblogic域管理目录路径,我们在根路径创建了目录。
/deploy/applications/app
/deploy/applications/plan
app : 准备用来存放app应用,在文件夹建好以后,将我们的应用(如:wzfy)整个文件夹拷贝
到app下面。
plan : 这个文件夹当weblogic管理服务器安装了app下面的应用后,会在这里自动建立app
的部署计划文件。
在管理服务器中,找到目录/deploy/applications/app ,选中wzfy,开始安装。第三个问题出
现
无法访问选定应用程序。
Exception in AppMerge flows' progression
Exception in AppMerge flows' progression
[J2EE:160111]ERROR: Appc can not write to the working directory,
'/deploy/applications/app/wzfy'. Please ensure that you have write permission for
this directory and try again.
通过文字意思的理解,就是对于操作用户来说/deploy/applications/app/wzfy是不可写的。
奇怪,我们手动建立目录都是可写的呀?怎么用webLogic Server安装就变成不可写了呢。
一想,我们建立用户用的root用户,目录操作肯定没问题,而我webLogic Server登录的用户
如果没有授权肯定是没有这个权限。于是给webLogic Server用户 weblogic授予对目录
/deploy/applications/的访问权限。
授权方法如下:
chown –Rf weblogic:weblogic /deploy/applications
授权后,安装部署,一路走下来,非常顺利,直到启动wzfy,第四个问题出现
四、创建sessionFactory失败
Exception:
[HTTP:101216]Servlet: "context" failed to preload on startup in Web
application: "wzfy".
eationException: Error creating
bean with name 'sessionFactory' defined in ServletContext resource
[/WEB-INF/]: Initialization of bean failed;
nested exception is ateException:
Errors in named queries: queryViewByModuleID, querySecParentOwnerById,
中间省略数千字………………………………………………………………………
at
nFactoryImpl.
问题分析:
碰到这个问题后,一头雾水,这怎么解决呢,第一想法是可能因为我们在hibernate中映射文
件中使用name queries(命名查询)的方式,会不会是weblogic不认呢?通过google和baidu了
很多资料,很试了很多方法,都已失败告终,最后在发现了有一个哥们在blog中总结的一段内容,
问题解决。
5、 Hibernate3、Axis部署问题
Hibernate3中y_class的默认值为
ryTranslatorFactory,在WebLogic下系统运行时
会抛出xception: ClassNotFoundException:
en异常。
这个问题网上说的很多,解决方法也各式各样,其实很简单,Weblogic系统默认加
载EJB-QL parser,存在重名类,所以使用时会出现ClassNotFoundException。一
般网上的修改方式都是修改startWebLogic运行的脚本,将文
件优先加载。但这样的方法会带来一些其他问题,所以不推荐使用。最好的方法是,
在WEB-INF目录下建一个文件,文件中写入如下代码:
8.1//EN" "/servers/wls810/dtd/">
说明:prefer-web-inf-classes=true是WebLogic's classloader在有重名类时,
优先加载Web应用中WEB-INF内的类。
Axis部署同理。
至此,问题彻底解决,感谢很多热心的网友,将自己解决问题的方法写出来,贡献给广大劳动人民,
所以我也准备将今天解决的问题总结一下,放到blog里,希望能给遇到同样问题的朋友提供一些帮
助。
版权声明:本文标题:将应用部署到weblogic10及oracle linux时遇到的问题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1717461914a707293.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论