在HP-Unix上部署J2EE应用程序的小结

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
 
最近在HP-UNIX上面部署了前一次开发的BREW CMS以及Dealing的应用程序,忙前忙后一共花了2天时间。本人是只菜鸟,大家看了不要笑话。用了2天时间也是挺吓人的。下面是部署过程中有点细节问题,帖出来和大家共享。有可能大家部署程序很顺利,从来没有出现过这样的情况。
 
操作系统就不用说了,运行环境如下:
方案一:Java1.5 + Tomcat5.0.28 + Oracle10g
方案二:Java1.5 + Resin-pro-3.0.24 +Oracle10g
 
在以上项目中主要采用了一些技术,比如:struts1.1,hibernate3.x,Spring,Xfire等等,也就是这些东西糊弄人,部署他们还真的不是太容易,其中最容易出现的问题就是Xml解析的问题。还有HP机器上会自带Jdk的安装。一般安装在/opt下面。
 
第一:所有的软件,所有的程序最好是在window上面解压后上传去服务器上面。我是这样做,到目前没有出现任何问题。因为直接在HP-UNIX上面解压,有些文件名会被系统截取。最有可能出现下面的情况,一头雾水,搞不清楚状况。
 
[00:00:01.462] com.caucho.config.LineConfigException: WEB-INF/web.xml:38: `com.asiainfo.aicms.web.servlet.GetCurrentFunctionPath' is not a known servlet. Servlets belong in the classpath, often in WEB-INF/classes.
[00:00:03.410] WebApp[http://localhost:8000/aiuser] stopping
[00:00:03.512] com.caucho.config.LineConfigException: WEB-INF/web.xml:41: `com.asiainfo.aiuser.web.servlet.DrawSystemResource' is not a known servlet. Servlets belong in the classpath, often in WEB-INF/classes.
 
到该目录下面一看,文件名被截取了。恶心!
 
还有一种情况,假如你直接在HP机上面已经安装了应用服务器,请检查一下,该服务器是否能正确启动,如果不行,如果你不是HP-UNIX达人,你还是慢慢上传吧。大概也得30分钟上传这些吧。
 
第二:必须采用Java1.5的版本,如果不用可能会出现Java最基本数据类型的解释出错。比如: Character.valueOf()的解释出错。如果用Java1.4还真的不行。
 
第三:运行服务器,没有响应,根本起不来。是不是你的环境没有设对啊。
Tomcat的如下参考:
 
export JAVA_HOME=/opt/java1.5/
export PATH=/opt/java1.5/bin:/usr/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/home2/project/jakarta-tomcat-5.0.28/bin
export CLASSPATH=/home2/project/jakarta-tomcat-5.0.28/common/lib
 
最好把他们设置到启动项里面。
 
第四:还是Java1.5的问题,当你部署好那些应用服务器以及你的应用程序,刚启动就会发现下面的错误:Xml解析出错或者Struts不能被正确加载?请看:
 
Begin event threw error
javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
         at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
         at org.apache.commons.modeler.util.DomUtil.readXml(DomUtil.java:284)
         at org.apache.commons.modeler.modules.MbeansDescriptorsDOMSource.execute(MbeansDescriptorsDOMSource.java:130)
         at org.apache.commons.modeler.modules.MbeansDescriptorsDOMSource.loadDescriptors(MbeansDescriptorsDOMSource.java:120)
         at org.apache.commons.modeler.Registry.load(Registry.java:819)
         at org.apache.commons.modeler.Registry.loadDescriptors(Registry.java:931)
         at org.apache.commons.modeler.Registry.loadDescriptors(Registry.java:909)
         at org.apache.catalina.mbeans.MBeanUtils.createRegistry(MBeanUtils.java:1599)
         at org.apache.catalina.mbeans.MBeanUtils.<clinit>(MBeanUtils.java:107)
         at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.<clinit>(GlobalResourcesLifecycleListener.java:65)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
         at java.lang.Class.newInstance0(Class.java:354)
         at java.lang.Class.newInstance(Class.java:307)
         at org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:253)
         at org.apache.commons.digester.Rule.begin(Rule.java:200)
         at org.apache.commons.digester.Digester.startElement(Digester.java:1273)
         at org.apache.catalina.util.CatalinaDigester.startElement(CatalinaDigester.java:65)
         at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
         at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
         at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
         at org.apache.commons.digester.Digester.parse(Digester.java:1548)
         at org.apache.catalina.startup.Catalina.load(Catalina.java:489)
         at org.apache.catalina.startup.Catalina.load(Catalina.java:528)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)
         at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)
java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)
         at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)
 
。。。。
那好,请按下面的方式去试试看。
 
检查一下你的/opt/java1.5/jre/lib下面有没有这个文件,叫jaxp.properties可别小看他,为什么加他,我也不是太明白。加上他了,你的Xml解析就不会出现问题。如果该目录下面没有这个文件就创建,内容如下:
 
javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
 
你可别小看这两句话,你颠倒一下他们的顺序,可以还会出大问题呢。假如你的程序里面使用了Xpath这样的东西,还真的不能颠倒上面的两句话呢,否则请看下面的错误。
 
2007-10-16 16:19:38,560 ERROR org.apache.commons.digester.Digester - Digester.getParser:
org.xml.sax.SAXNotRecognizedException: Feature: http://apache.org/xml/features/validation/dynamic
         at org.apache.crimson.parser.XMLReaderImpl.setFeature(XMLReaderImpl.java:213)
         at org.apache.crimson.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:143)
         at org.apache.crimson.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:126)
 
。。。。。。。
 
2007-10-16 16:19:38,565 ERROR org.apache.struts.action.ActionServlet - Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable. Most likely, this is due to an incorrect or missing library dependency.
java.lang.NullPointerException
         at org.apache.commons.digester.Digester.getXMLReader(Digester.java:891)
         at org.apache.commons.digester.Digester.parse(Digester.java:1572)
         at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:738)
         at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:687)
 
导致你的struts不能被加载。网上说了很多,没有什么解决方案,我也是碰了巧了。除非你不用Xpath。千万不要颠倒啊,特别是那些喜欢用Xpath的大虾们。
还没有说完呢!
看看/opt/java1.5/jre/lib下面有没有一个目录叫endorsed。如果没有,从你的%tomcat_home%/common/下面靠过来吧。包你没错!
 
第五:假如使用resin的服务器,需要改动一下他的配置文件%resin_home%/conf/resin.conf。使他更好的支持Xml的解析。
 
首先找到“<host id="" root-directory=".">”,在其后加上如下语句:
 
<system-property javax.xml.transform.TransformerFactory="org.apache.xalan.processor.TransformerFactoryImpl"/>
<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
<system-property org.xml.sax.driver="org.apache.xerces.parsers.SAXParser"/>
 
目前还是还是使用resin3.0版本没有问题。但是3.1的版本还是有问题,还真的起不来呢.!
 
第六:由于tomcatresinSpring的加载方式还不一样。我也不知道为什么他们就不一样。也就那么点差别。这就需要修改你的项目的web.xml。不用说在那里了吧。
 
Tomcat的加载方式如下:
<servlet>
                   <servlet-name>context</servlet-name>
                   <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
                   <load-on-startup>1</load-on-startup>
</servlet>
 
Resin的加载方式如下:
<listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
</listener>
 
这些好像也就是在非window环境需要改动,window上面无需改动此部分。
 
第七:关于Oracle10g的字符集的查询,以及更该。
 
首先超级管理员登录:
select name,value$ from props$ where name='NLS_CHARACTERSET';
 
看看不是下面的这个,或者类似:
NAME                      VALUE$
------------------------- -------------------------
NLS_CHARACTERSET          ZHS16GBK
 
假如不是,你要改一下。
改完了一定要重新启动。然后重新导入您的数据。
 
第八:Oracle数据的导入导出
 
导入语句比如:
$oracle>imp aiuser/aiuser@brewcms grants=y full=y file=/home/oracle/aiuser.dmp
 
导出语句比如:
$oracle>exp aicms/aicms@orasid full=y file=/home/oracle/aicms.dmp
 
 
 
 
按照以上步骤基本上能成功部署你的项目吧。可能也适用于linux系统下面的应用部署。出了问题我可不负任何责任啊。希望大家多提意见。
 
 
利用MobaXterm通过图形界面管理HP Unix系统 通过MobaXterm启用Unix图形界面进行系统管理 阅读详情

相关推荐

HP Unix 与 Websphere 集成问题解决方案

HP Unix 与 Websphere 集成问题解决方案      李俊杰概述某资金管理信息系统的操作系统是HP Unix应用服务器为IBM Websphere。在系统开发应用中,偶尔出现启动死机现象,具体的说就是,当修改文件后,copy到应用服务器的相应位置,然后停止该服务,重启该服务,在重启服务的过程中偶尔会出现停滞现象。错误原因及解决方案错误信息查看后台Syst

747

servlet 路径错误

错误信息如下: 500 Servlet Exception WEB-INF/web.xml:20: `com.sohu.blogSuggest.SuggestConf' is not a known servlet. Servlets belong in the classpath, often in WEB-INF/classes. Resin-3.0.24 (bui

1722

惠普HP unix命令大全

linux服务器性能查看 1.1 cpu性能查看 1、查看物理cpu个数: cat/proc/cpuinfo|grep"physicalid"|sort|uniq|wc-l 2、查看每个物理cpu中的core个数: cat/proc/cpuinfo|grep"cpucores"|wc-l 3、逻辑cpu的个数: cat/proc/cpuinfo|grep"processor"|wc-l 物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的...

XMWS-IT 4489

Applied Windows Live Custom Domains (3) - SOAP Calls to the Web Service

如果您想自己血访问Windows Live Custom Domains Web服务的代码,那么需要看一下下面的几个方法。GetLoginUrlpublic string GetLoginUrl(string memberName)调用:GetLoginUrl(fanweixiao@hotmail.com)返回:为了使用我们的服务的Passport的登陆URLGetLoginDataT

Vitaminc.net on CSDN 796

Servlet 解析出错(is not a known servlet

因为功能的需要,在项目中新加了一个servlet类,在本地调试好后,上传至服务器,一启动容器就报如下的错误: com.caucho.config.LineConfigException:  WEB-INF/web.xml:140: `com.xy.servlet.TzServlet' is not a known servlet.  Servlets belong in the classpa

atlim的专栏 3253

servlet解析不出来解决方法(is not a known servlet. Servlets belong in the classpath, often in WEB-INF/classes)

‘’is not a known servletServlets belong in the classpath, often in WEB-INF/classes.面对这种情况,本人解决的方法,目前有两个,陆续更新中。。。1.查看自己的web.xml文件,开始有段这样的话 xmlns="http://java.sun.com/xml/ns/j2ee" -----------------

G-Ohand 7428

Struts错误– NoSuchMethodError:Digester.parse(Ljava / net / URL;)Ljava / lang / Object

问题 在Struts初始化期间,它会遇到以下错误消息。 SEVERE: Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable. Most likely, this is due to ...

一名可爱的技术搬运工 483

java中的xml解析时jaxp.properties文件问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34295316的博客 957

org.xml.sax.SAXNotRecognizedException

昨天上午启动resin的时候出现org.xml.sax.SAXNotRecognizedException org.xml.sax.SAXNotRecognizedException: Feature: http://apache.org/xml/features/validation/dynamic at org.apache.crimson.parser.XMLReaderImpl.set...

whaohaoxuexi02的专栏 552

java sax2_java – 在Tomcat上的webapp中使用Batik时“找不到SAX2驱动程序类org.apache.crimson.parser.XMLReaderImpl”...

这可能与类路径问题有关,但我现在还不确定,因为我在某些机器上没有出现此错误.堆栈顶部的错误是找不到SAX2驱动程序类org.apache.crimson.parser.XMLReaderImpl.为什么我只在某些环境中获得此错误,而不是其他环境?我该如何进一步调查和/或解决这个问题?环境:> Mac或PC上的Jetty ==好的> Mac上的Tomcat 5或6 == OK> W...

weixin_28949355的博客 340

javax.xml.parsers.FactoryConfigurationError错误分析

2008-10-2 15:34:36 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1960f05: display n...

iteye_956的博客 427

tomcat报错org.apache.tomcat.jni.Error:720008???.???

记录一次排查报错。错误发生在一次服务器后台导出excel文件的过程中。 根据报错信息,在tomcat反编译的代码中,发现报错的open(data.fileName,4129,0,data.fdpool)方法只有一个(如图)。 此时猜测,一.有可能是生成的excel文件丢失。二.tomcat有不为人知的bug。 根据本地代码中异常捕获的地方是一个IOException.更加让我怀疑是生成的...

sokenna的博客 3222
下一篇: 请问大虾门 为什么jbpm对mysql5.x的支持有问题?
俺不是坏人
博客等级 码龄19年 58粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值