在Worklight 5.0.6中部署项目的问题

时间:2013-05-09 16:49:04

标签: tomcat openjpa ibm-mobilefirst

使用MySQL 5.6在Tomcat 7上运行Worklight 5.0.6

我删除了所有以前的数据库,然后让Install Manager重新创建它们。控制台运行正常,我可以上传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标准版

数据库: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

以下是更多细节的步骤: 是的,这里是步骤:

  1. 使用IM安装worklight 5.0.6.1 - 这会在我的Tomcat文件夹中放入三个webapp:appcenterconsole.war,applicationcenter.war和worklight.war

  2. 运行控制台(成功运行):http://hostname:8080/worklight/console

  3. 在eclipse中创建一个混合项目,它会在/ bin文件夹中生成myprojectname.war文件

  4. 更新项目的server / conf文件夹中workllight.properties文件中的publicWorkLightContext,publicWorkLightPort,wl.db.type,wl.db.jndi.name变量。

  5. 将myproject.war重命名为myappname.war以匹配publicWorkLightContext变量的值

  6. 手动将myappname.war文件放在Tomcat的webapps文件夹下(这是错误开始出现的时候)

  7. 另外通过worklight控制台上传适配器和wlapp文件。此步骤正常,我可以看到在数据库中创建的相应记录

1 个答案:

答案 0 :(得分:0)

确保只部署了一个Worklight .war文件。

根据您提到的步骤,似乎您在删除新的.war文件之前没有从Tomcat中删除当前的worklight .war文件。一次只能有一个Worklight .war文件。

  1. 转到http://yourhost:8080/manager并确保禁用和取消部署当前的Worklight .war文件。
  2. 使用Tomcat管理器,部署新的.war文件
  3. 转到http://yourhost:8080/yourcontext/console并从相关的Worklight项目部署应用