我正在尝试部署一个将JPA 2.0与EclipseLink实现一起使用到WebLogic 10.3.6服务器的webapp。
当我开发应用程序时,我使用了Tomcat服务器来测试它。由于Tomcat不是应用服务器,我使用Spring的加载时间编织器进行编织:
<bean id="emFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property value="classpath:META-INF/myPersistence.xml" name="persistenceXmlLocation" />
<property name="dataSource" ref="dataSource" />
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
</bean>
Oracle的文档说“在符合Java EE 5的应用程序服务器(如Oracle WebLogic)中自动启用动态字节码编织”,因此我从实体管理器工厂bean中删除了loadTimeWeaver
属性:
<bean id="emFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property value="classpath:META-INF/myPersistence.xml" name="persistenceXmlLocation" />
<property name="dataSource" ref="dataSource" />
</bean>
但是当我尝试将我的webapp部署到WebLogic时,它会抛出以下异常:
java.lang.IllegalStateException:无法应用类转换器 没有指定LoadTimeWeaver
我是否需要做一些事情来启用运行时编织,即使Oracle的文档说它默认启用了?
也许是因为WebLogic 10.3.6实现了Java EE 5规范而不是Java EE 6,因此,它不支持JPA 2.0开箱即用:我需要安装补丁并重命名我的persistence.xml文件到其他东西(在这种情况下是myPersistence.xml),以便WebLogic找不到它。如果是这种情况,我如何在服务器中启用运行时编织?
答案 0 :(得分:2)
解决。我只需要将它添加到applicationContext.xml:
<context:load-time-weaver />