在装有 MySQL 5.6 的 Tomcat 7 上运行 Worklight 5.0.6
我删除了所有以前的数据库,让安装管理器重新创建它们。控制台运行良好,我可以上传 wlapp 和 adapetrs。但是,在部署 myproject.war 之后,我每 5 秒就会收到以下错误:
SEVERE: Persistency data access problem
com.worklight.core.exceptions.PersistentDataAccessException:
Persistency data access problem at com.worklight.core.exceptions.DefaultExceptionHandler.handleException(DefaultExceptionHandler.java:50) at com.worklight.core.tasks.TaskThread.run(TaskThread.java:100)
Caused by:
org.springframework.dao.InvalidDataAccessApiUsageException: Can only perform operation while a transaction is active.;
nested exception is <openjpa-1.2.2-r422266:898935 nonfatal user error>
org.apache.openjpa.persistence.TransactionRequiredException: Can only perform operation while a transaction is active.
操作系统:Windows Server 2008 R2 Standard
数据库:APPCNTR、WLREPORT、WRKLGHT
context.xml 的内容
<Context>
<Resource name="jdbc/WorklightDS"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="worklight"
password="***"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/WRKLGHT"/>
<Resource name="jdbc/WorklightReportsDS"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="worklight"
password="***"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/WLREPORT"/>
<Resource name="jdbc/AppCenterDS"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="worklight"
password="***"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/APPCNTR"/>
</Context>
Tomcat的web.xml
<resource-ref>
<res-ref-name>jdbc/WorklightDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jdbc/WorklightReportsDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
worklight.properties
wl.db.jndi.name=java:comp/env/jdbc/WorklightDS
wl.db.type=MYSQL
详细步骤如下: 是的,这里是步骤:
使用 IM 安装 worklight 5.0.6.1 - 这会将三个 Web 应用程序放入我的 Tomcat 文件夹中:appcenterconsole.war、applicationcenter.war 和 worklight.war
运行控制台(成功运行):
http://hostname:8080/worklight/console
在 eclipse 中创建一个混合项目,在/bin 文件夹中生成 myprojectname.war 文件
更新我项目的 server/conf 文件夹中 workllight.properties 文件中的 publicWorkLightContext、publicWorkLightPort、wl.db.type、wl.db.jndi.name 变量。
将 myproject.war 重命名为 myappname.war 以匹配 publicWorkLightContext 变量的值
手动将 myappname.war 文件放到 Tomcat 的 webapps 文件夹下(这是开始出现错误的时候)
另外通过 worklight 控制台上传适配器和 wlapp 文件。这一步工作正常,我可以看到在数据库中创建的相应记录
最佳答案
确保只部署了 1 个 Worklight .war 文件。
根据您提到的步骤,您似乎没有在删除新的 .war 文件之前从 Tomcat 中删除当前的 worklight .war 文件。一次只能有 1 个 Worklight .war 文件。
- 转到
http://yourhost:8080/manager
并确保禁用并取消部署当前的 Worklight .war 文件。 - 使用 Tomcat 管理器,部署新的 .war 文件
- 转到
http://yourhost:8080/yourcontext/console
并部署来自相关 Worklight 项目的应用
关于tomcat - 在 Worklight 5.0.6 中部署项目时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466915/