1、常见J2EE应用问题分析与解决演讲人:时间:2022-7-27Kingdee Middleware 2019-6-11常见J2EE应用问题分析与解决n 常见安装问题n 常见部署问题n 常见运行问题提纲Kingdee Middleware 2019-6-11Apusic 4.0支持的JDK版本是多少?nApusic 4.0支持JDK1.4.2以上及JDK1.5、JDK1.6种类版本SUN1.4.2/1.5.0/1.6IBM1.4.2/1.5.0HP1.4.2/1.5.0BEA JRocket1.4.2/1.5.0Kingdee Middleware 2019-6-11Apusic License
2、如何申请?n第1步:用浏览器的打开以下页面:apusic/register.jsp,并输入有关注册信息;n第2步:”提交”注册信息,生成license;n第3步:点击”保存”下载license。具体操作如下:Kingdee Middleware 2019-6-11Apusic License如何申请?Kingdee Middleware 2019-6-11Apusic License如何使用?n第1步:将license文件保存至以下目录:APUSIC_HOME/config,文件名定义为:license(没有后缀)n第2步:重新启动Apusic,license生效。Kingdee Middle
3、ware 2019-6-11Apusic License如何判定生效?nApusic4.0.1以前版本:启动一开始出现以下类似”Apusic 4.1 build 109(licensed copy)”提示:Kingdee Middleware 2019-6-11Apusic License如何判定生效?(续)nApusic4.0.1以后版本:Kingdee Middleware 2019-6-11机器两个CPU购买一个CPU可以吗?n不可以,会有并发限制。Kingdee Middleware 2019-6-11为什么安装失败n可能的原因:未安装JDKWindows下安装自解压失败空间不够Kin
4、gdee Middleware 2019-6-11是否支持中文安装目录n支持,但不建议使用,因为:应用中可能有部分业务功能跟安装目录有关,解析中文可能导致问题Kingdee Middleware 2019-6-11安装后是否需要重启机器n不需要重启。Kingdee Middleware 2019-6-11如何设置环境变量nWindows下,通过set命令,如:set JAVA_HOME=d:javajdk1.5.0nLinux/unix下,一般通过export命令,如:export JAVA_HOME=/usr/java/jdk1.5.0n建议:安装后将与Apusic相关的环境变量设置命令写入
5、到setenv.cmd或者setenv.sh(linux/unix)Kingdee Middleware 2019-6-11如何检查环境变量nWindows下,用set命令nLinux/unix下,用env命令有关环境变量也有可能在可执行文件中进行设置n需要注意的几个环境变量JAVA_HOMEAPUSIC_HOMEpathclasspathKingdee Middleware 2019-6-11为什么License加入后没有生效?如果Apusic License没有生效,启动不会出现类似以下字样:Apusic 4.0 build 109(licensed copy)这时Apusic没有检测到有
6、效的License文件,可以依据以下方法来分析:n先确定License是不是有效的。例如申请License时用的IP和真实环境中的IP地址不一致,License无效。nLicense的文件名和位置是否正确。Apusic License文件名没有任何后缀,文件名为:license,license文件所在位置是:APUSIC_HOME/config/目录下。Kingdee Middleware 2019-6-11如何升级n备份安装目录下以下目录中的所有文件libconfig(特别是license文件)binlogsStoresn快速升级更新/替换lib目录中的apusic.jar、mejb.jar
7、和razor.jar如有需要更新config目录下的license文件Kingdee Middleware 2019-6-11常见J2EE应用问题分析与解决n 常见安装问题n 常见部署问题n 常见运行问题提纲Kingdee Middleware 2019-6-11Apusic远程管理(WebAdmin)地址是什么nhttps:/your-host-name:6889/admin/n其中,your-host-name指目标服务器所在的IP地址Kingdee Middleware 2019-6-11默认用户与密码是什么n用户:adminn密码:adminKingdee Middleware 201
8、9-6-11nApusic默认的访问端口是:6888。Apusic默认的访问端口是多少?Kingdee Middleware 2019-6-11有两中方法:n方法 1:编辑APUSIC_HOME/config/apusic.conf,将6888替换为80。如何将默认的6888端口换为80口?Kingdee Middleware 2019-6-11n方法 2:通过管理控制台,在管理界面上找到相应的配置页面并更改6888为80。注意两种方法修改后都需要重新启动Apusic才能生效。如何将默认的6888端口换为80口?(续)Kingdee Middleware 2019-6-11有两中方法:n方法
9、1:编辑APUSIC_HOME/config/datasources.xml文件,部分数据库数据源的设置参考:在Apusic中如何设置数据源?datasource name=db2 jndi-name=jdbc/db2 driver-class=COM.ibm.db2.jdbc.app.DB2Driver driver-classpath=E:jdbcdb2java.zip“url=jdbc:db2:sunkydbmin-spare-connections=5 max-spare-connections=30idle-timeout=300 admin Kingdee Middleware 2
10、019-6-11n方法 2:访问管理控制台,在数据源的配置页面配置相关参考即可:在Apusic中如何设置数据源?(续)Kingdee Middleware 2019-6-11数据库连接池JNDI名错误nJNDI名配置错误或者未配置好数据库源将导致以下异常:javax.naming.NameNotFoundExceptionn与此相关的常见错误是JDBC驱动不在类路径上,将导致以下异常:classnotfoundKingdee Middleware 2019-6-11n 报java.lang.UnsupportedClassVersionError错误是什么原因?如果编译应用中的JDK,比Apu
11、sic运行环境的中JDK版本更高,就会出现java.lang.UnsupportedClassVersionError,或者类似:“版本号带小数的49.0太新,此工具无法 理解。”的错误提示。例如编译应用采用JDK1.5,而Apusic的运行环境采用JDK1.4。另外,JSP运行期需要javac编译包:APUSIC_HOME/lib/javac.jar。该包兼容版本为1.4.2,因此,如果使用JDK1.5.0,访问JSP时将报错:“类文件格式无效。版本号带小数的“49.0”太新,此工具无法 理解。”解决办法:移除APUSIC_HOME/lib/javac.jar,将JAVA_HOME/lib/
12、tools.jar拷贝到APUSIC_HOME/lib目录Apusic 5.0将彻底进行fix,无需再行担忧 JDK版本不一致错误Kingdee Middleware 2019-6-11为何读取XML文件异常nXML文档是编码敏感的,包括其中一些非可见字符,如果使用编辑器不当,在编辑或保存过程中引入不可见字符,将导致读取XML文件异常。Kingdee Middleware 2019-6-11如何正确处理XML编码nXML头通过encoding属性指定编码,如n如需要进行编辑,最好使用notepad,在另存时选择保存文件的编码,对应于XML头的encoding设定。Kingdee Middlew
13、are 2019-6-11如何更换XML解析器n将XML解析器所在的jar文件(如xercesImpl.jar、xmlParserAPIs.jar)加入到类路径,在java命令行通过-D加入以下参数,形如:-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImplKingdee Middleware 2019-6
14、-11为何部署失败n部署失败的可能原因:虚拟路径名重复(可以部署多个应用,不同的应用通过不同的虚拟路径进行访问,因此虚拟路径不允许重复)配置文件有误类装载有错误类找不到格式有误访问数据库异常(有些应用在装载阶段进行访问数据库)Kingdee Middleware 2019-6-11常见J2EE应用问题分析与解决n 常见安装问题n 常见部署问题n 常见运行问题提纲Kingdee Middleware 2019-6-11没有找到JDK环境的异常E:apusicapusic-4.0.3binstartapusicThe JAVA_HOME environment variable is not de
15、finedThis environment variable is needed to run this program解决办法:找回JAVA_HOMEKingdee Middleware 2019-6-11类无法装载问题?2019-03-29 14:09:54 错误 apusic.webapp.rloa./rloa 执行Servlet时发生错误。java.lang.NoClassDefFoundError:oracle/jdbc/driver/OraclePreparedStatementat com.apusic.servlet.http.Context.processRequest(Un
16、known Source)at com.apusic.servlet.http.VirtualHost.processRequest(Unknown Source)at com.apusic.servlet.http.HttpServer.processRequest(Unknown Source)at com.apusic.servlet.http.HttpConnectionHandler.service(Unknown Source)at com.apusic.servlet.http.ConnectionHandler.processRequest(Unknown Source)at
17、com.apusic.servlet.http.ConnectionHandler.processConnection(Unknown Source)at com.apusic.servlet.http.ConnectionHandler.run(Unknown Source)at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)Kingdee Middleware 2019-6-11 出现这类问题有多种情况:n第一种情况:类本身不存在。在运行环境中加入相关类即可解决这个问题。如果上面的错误是这种情况,解决办法:将O
18、racle的驱动包加入到WEB-INF/lib/目录下。n第二种情况:类的冲突。解决办法:保留最新的一个类,或者将最新的类的拷贝到Apusic环境下。例如我们经常遇到的有关log4j的加载问题就是这样。类无法装载问题?(续)Kingdee Middleware 2019-6-11端口占用,导致启动失败?n端口被占用的异常是:java.BindException:Address already in use:bindKingdee Middleware 2019-6-11nApusic启动时可能需要用的端口为:80(默认是6888)443(默认是6887)6889 端口被其它程序占用,或者上一次
19、启动的Apusic进程没有退出都会出这类问题:用netstat命令查看n解决办法:修改其它程序或Apusic的端口,重新启动;杀掉Apusic上次启动遗留的进程。端口占用,导致“启动失败”?(续)Kingdee Middleware 2019-6-11如何察看运行日志n系统及应用日志保存在APUSIC_HOME/logs目录中n日志以循环写的方式进行记录,可以通过APUSIC_HOME/config/logging.xml进行设置日志文件的大小与数量 Kingdee Middleware 2019-6-11数据库连接失败:JNDI名找不到2019-06-23 01:56:45 信息 com.t
20、itansoft.j2ee.oa.sm.log.dao.LogDao 数据源连接有误!2019-06-23 01:56:45 信息 con.err javax.naming.NameNotFoundException:java:comp/env/jdbc/titanoa;remaining name jdbc/titanoa2019-06-23 01:56:45 信息 con.err at com.titansoft.j2ee.oamon.serviceLocator.ServiceLocator.getDataSource(ServiceLocator.java:112)2019-06-23
21、 01:56:45 信息 con.err at com.titansoft.j2ee.oamon.dao.DaoBase.(DaoBase.java:85)2019-06-23 01:56:45 信息 con.err at com.titansoft.j2ee.oamon.dao.DaoBase.(DaoBase.java:67)2019-06-23 01:56:45 信息 con.err at com.titansoft.j2ee.oa.sm.log.dao.LogDao.(LogDao.java:51)Kingdee Middleware 2019-6-11数据库连接失败:无法找到数据库驱
22、动2019-06-23 2019-03-29 14:09:54 错误 apusic.webapp.rloa./rloa 执行Servlet时发生错误。java.lang.NoClassDefFoundError:oracle/jdbc/driver/OraclePreparedStatementat com.apusic.servlet.http.Context.processRequest(Unknown Source)at com.apusic.servlet.http.VirtualHost.processRequest(Unknown Source)at com.apusic.serv
23、let.http.HttpServer.processRequest(Unknown Source)at com.apusic.servlet.http.HttpConnectionHandler.service(Unknown Source)at com.apusic.servlet.http.ConnectionHandler.processRequest(Unknown Source)at com.apusic.servlet.http.ConnectionHandler.processConnection(Unknown Source)at com.apusic.servlet.htt
24、p.ConnectionHandler.run(Unknown Source)at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)Kingdee Middleware 2019-6-11nJNDI本身名字不对,重新配置JNDI名,在这里JDNI名为:jdbc/titanoa。有时也报类似以下错误:数据库连接失败:JNDI名找不到(续)2019-03-29 17:12:26 信息 con.err java.sql.SQLException:JTurbo 3.0.1 JDBC 2.1 Driver:Communicat
25、ion Link Failure.kingdee-xjw2019-03-29 17:12:26 信息 con.err at com.newatlanta.jturbo.driver.Driver.a(Driver.java)2019-03-29 17:12:26 信息 con.err at com.newatlanta.jturbo.driver.Driver.connect(Driver.java)2019-03-29 17:12:26 信息 con.err at java.sql.DriverManager.getConnection(Unknown Source)2019-03-29 1
26、7:12:26 信息 con.err at java.sql.DriverManager.getConnection(Unknown Source)2019-03-29 17:12:26 信息 con.err at com.ruili.util.db.DAO.getWFConnection(DAO.java:186)Kingdee Middleware 2019-6-11n将数据库驱动包的路径加入到数据源的配置文件中APUSIC_HOME/config/database.xml,如:数据库连接失败:无法找到数据库驱动(续)或者将数据库驱动包加入到APUSIC_HOME/lib/目录下。data
27、source driver-classpath=E:jdbcdb2java.zip“Kingdee Middleware 2019-6-11数据库连接失败:数据库用户名或密码不对2019-03-29 17:20:34 信息 con.err java.sql.SQLException:用户 sa 登录失败。2019-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.q.b(q.java)2019-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.tds.e.(e.java)201
28、9-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.a.(a.java)2019-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.Driver.a(Driver.java)2019-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.Driver.a(Driver.java)2019-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver
29、.Driver.connect(Driver.java)2019-03-29 17:20:34 信息 con.err at java.sql.DriverManager.getConnection(Unknown Source)2019-03-29 17:20:34 信息 con.err at java.sql.DriverManager.getConnection(Unknown Source)2019-03-29 17:20:34 信息 con.err at com.ruili.util.db.DAO.getWFConnection(DAO.java:186)Kingdee Middlew
30、are 2019-6-11n调整数据库的用户名和密码的配置。数据库连接失败:数据库用户名或密码不对(续)Kingdee Middleware 2019-6-11虚拟目录已经存在Caused by:java.lang.IllegalArgumentException:虚拟目录/TitansDigiTalWebFs 已经存在。at com.apusic.servlet.http.VirtualHost.addContext(Unknown Source)at com.apusic.servlet.http.HttpServer.loadWebModule(Unknown Source)at com
31、.apusic.servlet.http.WebService.loadWebModule(Unknown Source)Kingdee Middleware 2019-6-11n重复部署虚拟目录相同的应用(当前部署的虚拟目录已经存在),如上述的“TitansDigiTalWebFs”。解决解决办法:修改虚拟目录名称,配置文件为META-INF/apusic-application.xml:虚拟目录已经存在(续)/TitansDigiTalWebFs Kingdee Middleware 2019-6-11内存溢出如何处理?2019-03-23 15:06:08 错误 apusic.webap
32、p.mcasv./mcasv 执行Servlet时发生错误。java.lang.OutOfMemoryError Kingdee Middleware 2019-6-11nJava虚拟机不能给一个对象分配足够的内存,而垃圾回收器又不能提供更多的活动内存时抛出java.lang.OutOfMemoryError异常。n后果:应用服务器崩溃。内存溢出如何处理?(续)Kingdee Middleware 2019-6-11n可能的原因:内存溢出如何处理?(续)资源没有及时释放:比如没有正确的关闭连接。处理大对象:譬如你定义一个容器类对象vector,不断的往里面存储东西,而每次存储完毕后,虚拟机又没有来得及进行垃圾回收,于是就出现了这个错误。java本身的GC功能不一定那么及时 hibernate默认自动对对象进行缓存,把数据都装载内存里,用了很多collection之类的对象操作,而这种东西jvm不容易释放。Kingdee Middleware 2019-6-11内存溢出如何处理?(续)n解决办法:优化程序(最根本的方法):改变算法,优化功能,提高程序效率;处理大对象的时候,用try catch把它包起来,当发现对象过大的时候就抓住异常,并且把这个对象设成空;对于hibernate缓存,可以适当去掉缓存功能;加大虚拟机内存:-Xms128m-Xmx512m;重新启动应用服务器。谢谢!
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。