《常见J2EE应用问题分析与解决V.ppt》由会员分享,可在线阅读,更多相关《常见J2EE应用问题分析与解决V.ppt(50页珍藏版)》请在三一办公上搜索。
1、常见J2EE应用问题分析与解决,演讲人:时间:2023/9/18,Kingdee Middleware 2007-6-11,常见J2EE应用问题分析与解决,常见安装问题 常见部署问题 常见运行问题,提纲,Kingdee Middleware 2007-6-11,Apusic 4.0支持的JDK版本是多少?,Apusic 4.0支持JDK1.4.2以上及JDK1.5、JDK1.6,Kingdee Middleware 2007-6-11,Apusic License如何申请?,第1步:用浏览器的打开以下页面:http:/,Kingdee Middleware 2007-6-11,Apusic L
2、icense如何申请?,Kingdee Middleware 2007-6-11,Apusic License如何使用?,第1步:将license文件保存至以下目录:APUSIC_HOME/config,文件名定义为:license(没有后缀)第2步:重新启动Apusic,license生效。,Kingdee Middleware 2007-6-11,Apusic License如何判定生效?,以前版本:启动一开始出现以下类似”Apusic 4.1 build 109(licensed copy)”提示:,Kingdee Middleware 2007-6-11,Apusic License如
3、何判定生效?(续),以后版本:,Kingdee Middleware 2007-6-11,机器两个CPU购买一个CPU可以吗?,不可以,会有并发限制。,Kingdee Middleware 2007-6-11,为什么安装失败,可能的原因:未安装JDKWindows下安装自解压失败空间不够,Kingdee Middleware 2007-6-11,是否支持中文安装目录,支持,但不建议使用,因为:应用中可能有部分业务功能跟安装目录有关,解析中文可能导致问题,Kingdee Middleware 2007-6-11,安装后是否需要重启机器,不需要重启。,Kingdee Middleware 2007
4、-6-11,如何设置环境变量,Windows下,通过set命令,如:Linux/unix下,一般通过export命令,如:建议:安装后将与Apusic相关的环境变量设置命令写入到setenv.cmd或者setenv.sh(linux/unix),Kingdee Middleware 2007-6-11,如何检查环境变量,Windows下,用set命令Linux/unix下,用env命令有关环境变量也有可能在可执行文件中进行设置需要注意的几个环境变量JAVA_HOMEAPUSIC_HOMEpathclasspath,Kingdee Middleware 2007-6-11,为什么License加
5、入后没有生效?,如果Apusic License没有生效,启动不会出现类似以下字样:,Apusic 4.0 build 109(licensed copy),这时Apusic没有检测到有效的License文件,可以依据以下方法来分析:先确定License是不是有效的。例如申请License时用的IP和真实环境中的IP地址不一致,License无效。License的文件名和位置是否正确。Apusic License文件名没有任何后缀,文件名为:license,license文件所在位置是:APUSIC_HOME/config/目录下。,Kingdee Middleware 2007-6-11,如
6、何升级,备份安装目录下以下目录中的所有文件libconfig(特别是license文件)binlogsStores快速升级更新/替换lib目录中的apusic.jar、mejb.jar和razor.jar如有需要更新config目录下的license文件,Kingdee Middleware 2007-6-11,常见J2EE应用问题分析与解决,常见安装问题 常见部署问题 常见运行问题,提纲,Kingdee Middleware 2007-6-11,Apusic远程管理(WebAdmin)地址是什么,https:/your-host-name:6889/admin/其中,your-host-na
7、me指目标服务器所在的IP地址,Kingdee Middleware 2007-6-11,默认用户与密码是什么,用户:admin密码:admin,Kingdee Middleware 2007-6-11,Apusic默认的访问端口是:6888。,Apusic默认的访问端口是多少?,Kingdee Middleware 2007-6-11,有两中方法:方法 1:编辑APUSIC_HOME/config/apusic.conf,将6888替换为80。,如何将默认的6888端口换为80口?,Kingdee Middleware 2007-6-11,方法 2:通过管理控制台,在管理界面上找到相应的配置
8、页面并更改6888为80。注意两种方法修改后都需要重新启动Apusic才能生效。,如何将默认的6888端口换为80口?(续),Kingdee Middleware 2007-6-11,有两中方法:方法 1:编辑APUSIC_HOME/config/datasources.xml文件,部分数据库数据源的设置参考:,在Apusic中如何设置数据源?,max-spare-connections=30idle-timeout=300 admin,Kingdee Middleware 2007-6-11,方法 2:访问管理控制台,在数据源的配置页面配置相关参考即可:,在Apusic中如何设置数据源?(续
9、),Kingdee Middleware 2007-6-11,数据库连接池JNDI名错误,JNDI名配置错误或者未配置好数据库源将导致以下异常:与此相关的常见错误是JDBC驱动不在类路径上,将导致以下异常:classnotfound,Kingdee Middleware 2007-6-11,报错误是什么原因?,如果编译应用中的JDK,比Apusic运行环境的中JDK版本更高,就会出现,或者类似:“版本号带小数的49.0太新,此工具无法 理解。”的错误提示。例如编译应用采用JDK1.5,而Apusic的运行环境采用JDK1.4。另外,JSP运行期需要javac编译包:APUSIC_HOME/li
10、b/javac.jar。该包兼容版本为,因此,如果使用,访问JSP时将报错:“类文件格式无效。版本号带小数的“49.0”太新,此工具无法 理解。”解决办法:移除APUSIC_HOME/lib/javac.jar,将JAVA_HOME/lib/tools.jar拷贝到APUSIC_HOME/lib目录Apusic 5.0将彻底进行fix,无需再行担忧,JDK版本不一致错误,Kingdee Middleware 2007-6-11,为何读取XML文件异常,XML文档是编码敏感的,包括其中一些非可见字符,如果使用编辑器不当,在编辑或保存过程中引入不可见字符,将导致读取XML文件异常。,Kingdee
11、 Middleware 2007-6-11,如何正确处理XML编码,XML头通过encoding属性指定编码,如如需要进行编辑,最好使用notepad,在另存时选择保存文件的编码,对应于XML头的encoding设定。,Kingdee Middleware 2007-6-11,如何更换XML解析器,将XML解析器所在的jar文件(如xercesImpl.jar、xmlParserAPIs.jar)加入到类路径,在java命令行通过-D加入以下参数,形如:,Kingdee Middleware 2007-6-11,为何部署失败,部署失败的可能原因:,虚拟路径名重复(可以部署多个应用,不同的应用通
12、过不同的虚拟路径进行访问,因此虚拟路径不允许重复)配置文件有误类装载有错误类找不到格式有误访问数据库异常(有些应用在装载阶段进行访问数据库),Kingdee Middleware 2007-6-11,常见J2EE应用问题分析与解决,常见安装问题 常见部署问题 常见运行问题,提纲,Kingdee Middleware 2007-6-11,没有找到JDK环境的异常,E:apusicapusic-4.0.3binstartapusicThe JAVA_HOME environment variable is not definedThis environment variable is needed
13、 to run this program,解决办法:找回JAVA_HOME,Kingdee Middleware 2007-6-11,类无法装载问题?,2006-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.h
14、ttp.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 com.apusic.servlet.http.ConnectionHa
15、ndler.processConnection(Unknown Source)at com.apusic.servlet.http.ConnectionHandler.run(Unknown Source)at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source),Kingdee Middleware 2007-6-11,出现这类问题有多种情况:第一种情况:类本身不存在。在运行环境中加入相关类即可解决这个问题。如果上面的错误是这种情况,解决办法:将Oracle的驱动包加入到WEB-INF/lib/目录下。第二种情况:类的
16、冲突。解决办法:保留最新的一个类,或者将最新的类的拷贝到Apusic环境下。例如我们经常遇到的有关log4j的加载问题就是这样。,类无法装载问题?(续),Kingdee Middleware 2007-6-11,端口占用,导致启动失败?,端口被占用的异常是:.BindException:Address already in use:bind,Kingdee Middleware 2007-6-11,Apusic启动时可能需要用的端口为:80(默认是6888)443(默认是6887)6889 端口被其它程序占用,或者上一次启动的Apusic进程没有退出都会出这类问题:用netstat命令查看解决
17、办法:修改其它程序或Apusic的端口,重新启动;杀掉Apusic上次启动遗留的进程。,端口占用,导致“启动失败”?(续),Kingdee Middleware 2007-6-11,如何察看运行日志,系统及应用日志保存在APUSIC_HOME/logs目录中日志以循环写的方式进行记录,可以通过APUSIC_HOME/config/logging.xml进行设置日志文件的大小与数量,Kingdee Middleware 2007-6-11,数据库连接失败:JNDI名找不到,2002-06-23 01:56:45 信息 com.titansoft.j2ee.oa.sm.log.dao.LogDao
18、 数据源连接有误!2002-06-23 01:56:45 信息 con.err javax.naming.NameNotFoundException:java:comp/env/jdbc/titanoa;remaining name jdbc/titanoa2002-06-23 01:56:45 信息 con.err at mon.serviceLocator.ServiceLocator.getDataSource(ServiceLocator.java:112)2002-06-23 01:56:45 信息 con.err at mon.dao.DaoBase.(DaoBase.java:8
19、5)2002-06-23 01:56:45 信息 con.err at mon.dao.DaoBase.(DaoBase.java:67)2002-06-23 01:56:45 信息 con.err at com.titansoft.j2ee.oa.sm.log.dao.LogDao.(LogDao.java:51),Kingdee Middleware 2007-6-11,数据库连接失败:无法找到数据库驱动,2002-06-23,2006-03-29 14:09:54 错误 apusic.webapp.rloa./rloa 执行Servlet时发生错误。java.lang.NoClassDe
20、fFoundError:oracle/jdbc/driver/OraclePreparedStatementat com.apusic.servlet.http.Context.processRequest(Unknown Source)at com.apusic.servlet.http.VirtualHost.processRequest(Unknown Source)at com.apusic.servlet.http.HttpServer.processRequest(Unknown Source)at com.apusic.servlet.http.HttpConnectionHan
21、dler.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.http.ConnectionHandler.run(Unknown Source)at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unkn
22、own Source),Kingdee Middleware 2007-6-11,JNDI本身名字不对,重新配置JNDI名,在这里JDNI名为:jdbc/titanoa。有时也报类似以下错误:,数据库连接失败:JNDI名找不到(续),2006-03-29 17:12:26 信息 con.err java.sql.SQLException:JTurbo 3.0.1 JDBC 2.1 Driver:Communication Link Failure.kingdee-xjw2006-03-29 17:12:26 信息 con.err at com.newatlanta.jturbo.driver.
23、Driver.a(Driver.java)2006-03-29 17:12:26 信息 con.err at com.newatlanta.jturbo.driver.Driver.connect(Driver.java)2006-03-29 17:12:26 信息 con.err at java.sql.DriverManager.getConnection(Unknown Source)2006-03-29 17:12:26 信息 con.err at java.sql.DriverManager.getConnection(Unknown Source)2006-03-29 17:12:
24、26 信息 con.err at com.ruili.util.db.DAO.getWFConnection(DAO.java:186),Kingdee Middleware 2007-6-11,将数据库驱动包的路径加入到数据源的配置文件中APUSIC_HOME/config/database.xml,如:,数据库连接失败:无法找到数据库驱动(续),或者将数据库驱动包加入到APUSIC_HOME/lib/目录下。,datasource driver-classpath=E:jdbcdb2java.zip“,Kingdee Middleware 2007-6-11,数据库连接失败:数据库用户名或
25、密码不对,2006-03-29 17:20:34 信息 con.err java.sql.SQLException:用户 sa 登录失败。2006-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.q.b(q.java)2006-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.tds.e.(e.java)2006-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.a.(a.java)2006-03-29 17:
26、20:34 信息 con.err at com.newatlanta.jturbo.driver.Driver.a(Driver.java)2006-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.Driver.a(Driver.java)2006-03-29 17:20:34 信息 con.err at com.newatlanta.jturbo.driver.Driver.connect(Driver.java)2006-03-29 17:20:34 信息 con.err at java.sql.DriverManager
27、.getConnection(Unknown Source)2006-03-29 17:20:34 信息 con.err at java.sql.DriverManager.getConnection(Unknown Source)2006-03-29 17:20:34 信息 con.err at com.ruili.util.db.DAO.getWFConnection(DAO.java:186),Kingdee Middleware 2007-6-11,调整数据库的用户名和密码的配置。,数据库连接失败:数据库用户名或密码不对(续),Kingdee Middleware 2007-6-11,
28、虚拟目录已经存在,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.apusic.servlet.http.WebService.loadWebModule(Unknown Source),Kingdee Middlewar
29、e 2007-6-11,重复部署虚拟目录相同的应用(当前部署的虚拟目录已经存在),如上述的“TitansDigiTalWebFs”。解决解决办法:修改虚拟目录名称,配置文件为META-INF/apusic-application.xml:,虚拟目录已经存在(续),/TitansDigiTalWebFs,Kingdee Middleware 2007-6-11,内存溢出如何处理?,2006-03-23 15:06:08 错误 apusic.webapp.mcasv./mcasv 执行Servlet时发生错误。,Kingdee Middleware 2007-6-11,Java虚拟机不能给一个对象
30、分配足够的内存,而垃圾回收器又不能提供更多的活动内存时抛出异常。后果:应用服务器崩溃。,内存溢出如何处理?(续),Kingdee Middleware 2007-6-11,可能的原因:,内存溢出如何处理?(续),资源没有及时释放:比如没有正确的关闭连接。处理大对象:譬如你定义一个容器类对象vector,不断的往里面存储东西,而每次存储完毕后,虚拟机又没有来得及进行垃圾回收,于是就出现了这个错误。java本身的GC功能不一定那么及时 hibernate默认自动对对象进行缓存,把数据都装载内存里,用了很多collection之类的对象操作,而这种东西jvm不容易释放。,Kingdee Middleware 2007-6-11,内存溢出如何处理?(续),解决办法:,优化程序(最根本的方法):改变算法,优化功能,提高程序效率;处理大对象的时候,用try catch把它包起来,当发现对象过大的时候就抓住异常,并且把这个对象设成空;对于hibernate缓存,可以适当去掉缓存功能;加大虚拟机内存:-Xms128m-Xmx512m;重新启动应用服务器。,谢谢!,