Liferay中数据库异常的解决方法

来源:互联网 发布:怎么删除淘宝追加评价 编辑:程序博客网 时间:2024/05/16 07:19

问题描述:

       Liferay的后台管理时增加应用不稳定,有时候增加不了。现象是增加应用后一直在转圈,应用无法展现。刷新后portal就不能使用了。

       出现这种情况后重新启动服务后又可以增加应用了。但运行一段时间后又会出现上述问题。

       观察日志可发现会抛出异常

03:02:56,625ERROR [[jsp]] Servlet.service() for servlet jsp threw exception

com.liferay.portal.kernel.dao.orm.ORMException:could not load an entity:[com.liferay.counter.model.Counter#com.liferay.portal.model.Resource]

       atcom.liferay.portal.dao.orm.hibernate.ExceptionTranslator.translate(ExceptionTranslator.java:41)

       at com.liferay.portal.dao.orm.hibernate.SessionImpl.get(SessionImpl.java:111)

       atcom.liferay.counter.service.persistence.CounterPersistence.createCounterRegister(CounterPersistence.java:275)

       atcom.liferay.counter.service.persistence.CounterPersistence.createCounterRegister(CounterPersistence.java:261)

       atcom.liferay.counter.service.persistence.CounterPersistence.getCounterRegister(CounterPersistence.java:252)

       atcom.liferay.counter.service.persistence.CounterPersistence.increment(CounterPersistence.java:116)

       atcom.liferay.counter.service.persistence.CounterPersistence.increment(CounterPersistence.java:106)

       atcom.liferay.counter.service.persistence.CounterUtil.increment(CounterUtil.java:46)

       at com.liferay.counter.service.impl.CounterLocalServiceImpl.increment(CounterLocalServiceImpl.java:48)

       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

       atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

       at java.lang.reflect.Method.invoke(Method.java:585)

问题原因:

       根据异常信息可发现是连接portal数据库出现异常,无法从数据库中装载内容。

       经过分析,可能是数据库连接池的问题。原来使用的是jboss自带的数据库连接池有问题,替换为c3p0数据库连接池。

解决方法:

       上传c3p0.jar/server/default/lib目录下。

       上传log4j.properties文件到/server/default/deploy/ROOT.war/WEB-INF/classes目录下。

       上传c3p0-service.xml文件到/server/default/deploy目录下。

       这样的话liferay数据库的连接配置将在c3p0-service.xml文件中设置,数据库的连接池将使用c3p0