运行时编织似乎在WebLogic中不起作用

时间:2013-10-25 08:39:22

标签: java-ee jpa weblogic eclipselink

我正在尝试部署一个将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找不到它。如果是这种情况,我如何在服务器中启用运行时编织?

1 个答案:

答案 0 :(得分:2)

解决。我只需要将它添加到applicationContext.xml:

<context:load-time-weaver />