0

編集済み(元の質問が複雑すぎたため、単純化しています):

Liferay6.1.20でポートレットプラグインを作成します

ポートレットのweb.xmlにSpringコンテキストローダーを追加します

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

アプリケーションコンテキストにEntityManagerFactoryのインスタンスを追加します

<bean id="localEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceXmlLocation" value="WEB-INF/classes/META-INF/persistence.xml" />
</bean>

永続性の定義で、JPA実装を参照していることを確認してください

<persistence-unit name="casd" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
        <property name="eclipselink.weaving" value="false" />
    </properties>
</persistence-unit>

Tomcatの泣き声を見る

java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.eclipse.persistence.jpa.PersistenceProvider.getProviderUtil()Ljavax/persistence/spi/ProviderUtil;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, org/eclipse/persistence/jpa/PersistenceProvider, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for interface javax/persistence/spi/PersistenceProvider have different Class objects for the type javax/persistence/spi/ProviderUtil used in the signature

hibernate3.jar、eclipselink.jar、persistence.jarを使い果たすまで遊んで、Liferayがあなたにニヤリと笑っていることに気づきます。

Liferayの顔からその苛立たしい笑顔をどのように消しますか?言い換えると、

クラスローダーエラーを発生させずに、liferay 6.1.20のポートレットプラグイン内でSpringコンテキストでJPAプロバイダーをインスタンス化するにはどうすればよいですか?

4

1 に答える 1

0

Ok。ecliseplink.jar を /ROOT/WEB-INF/lib から {tomcat}/lib/ext に移動する問題を「解決」することができました

私はそれを解決策として好きではありません.extをいじる必要がありますが、それは取るか放置するかの状況です.

于 2012-08-31T10:22:44.073 に答える