JPA与Eclipse RAP / RCP中的Eclipselink MySQL jdbc

时间:2012-08-15 20:20:12

标签: jpa eclipse-rcp eclipselink classloader persistence.xml

系统概述:

  • Eclipse Indigo for RAP RCP devs,RAP 1.4 Target Components,Dali JPA,Jre1.6.0_33(Java1.6SE)
  • local oracle mysql db
  • 项目中导入的所有JPA(持久性)+ Eclipse链接OSGi包(根据eclipse wiki)
  • 包含项目中导入的com.mysql.jdbc.Driver类的OSGi包(最新的5.1.21?来自Oracle页面)
  • 通过JPA创建的持久性插件,带有jdbc驱动程序,正确的mysql数据库路径,正确的密码和& user(添加了对com.mysql.jdbc包的依赖)

避免ClassLoader问题:

  • bundle / plugin com.mysql.jdbc 在其MANIFEST.MF中: Bundle-BuddyPolicy:已注册
  • org.eclipse.persistence.core &拥有好友 org.eclipse.persitence.jpa 和我的 “持久性捆绑” 在他们的MANIFEST.MF中注册: Eclipse-RegisterBuddy:com.mysql.jdbc +他们已将依赖项添加到此包com.mysql.jdbc

问题:

即使在之前的所有步骤之后,我仍然: ClassNotFoundException - Driver not found

注:

  • 连接到从Eclipse DatabaseConnection内部测试的localhost mysql db,使用来自bundle com.mysql.jdbc的相同驱动程序(类 com.mysql.jdbc.Driver )[确定] ]
  • 如果 org.apache.derby 嵌入式db with Embeded驱动程序用于持久性(而不是mysql)(使用相同的Buddy策略),问题不会出现 - 所有问题工作正常

问题:

  • 即使应用了BuddyPolicy,它仍然会成为ClassLoader的问题吗?
  • 当它用作OSGi包时,它可能是驱动程序本身的问题吗?
  • 有人试过在RCP或RAP中使用这个com.mysql.osgi包以及JPA + Eclipselink吗?

1 个答案:

答案 0 :(得分:0)

我发现mysql.jdbc包中的问题没有为JDBC类驱动程序定义类路径(我的错误,我可能会监督这个)...我还检查了PAX JPA并且我认为现在不需要PAX JPA MYSQL JDBC捆绑包和OSGi捆绑包的Buddy Policy。我想保持简单:Equinox + Eclipselink JPA + JDBC驱动程序......我现在解决了所有问题。并且每件事都很好。