Je tente de configurer une carte de ressource JCA pour Gemfire 9.8 sur IBM WebSphere Liberty Base en suivant le lien https://gemfire.docs.pivotal.io/ 98 / Geode / Référence / Archive_Transactions / JTA_Transactions.html # concept_cp1_zx1_wk
Voici mon RA.XML: P>
java.lang.ClassCastException: org.apache.geode.internal.ra.GFConnectionFactoryImpl incompatible with org.apache.geode.ra.GFConnectionFactory
3 Réponses :
Qu'est-ce qui cause le noclassdefferror code>?
$ $ jar -xvf lib/geode-dependencies.jar META-INF/MANIFEST.MF
inflated: META-INF/MANIFEST.MF
$ cat META-INF/MANIFEST.MF
Manifest-Version: 1.0
Organization: Apache Software Foundation (ASF)
Class-Path: geode-common-1.9.2.jar geode-core-1.9.2.jar geode-connecto
rs-1.9.2.jar geode-lucene-1.9.2.jar geode-redis-1.9.2.jar geode-old-c
lient-support-1.9.2.jar geode-protobuf-1.9.2.jar geode-protobuf-messa
ges-1.9.2.jar geode-management-1.9.2.jar geode-wan-1.9.2.jar geode-cq
-1.9.2.jar geode-rebalancer-1.9.2.jar antlr-2.7.7.jar jgroups-3.6.14.
Final.jar jackson-databind-2.9.8.jar jackson-annotations-2.9.8.jar sp
ring-shell-1.2.0.RELEASE.jar commons-io-2.6.jar commons-validator-1.6
.jar javax.activation-1.2.0.jar jaxb-api-2.3.1.jar jaxb-impl-2.3.1.ja
r istack-commons-runtime-2.2.jar commons-lang3-3.8.1.jar micrometer-c
ore-1.1.3.jar fastutil-8.2.2.jar javax.resource-api-1.7.1.jar jna-4.1
.0.jar jopt-simple-5.0.4.jar log4j-slf4j-impl-2.11.1.jar log4j-core-2
.11.1.jar log4j-jcl-2.11.1.jar log4j-jul-2.11.1.jar log4j-api-2.11.1.
jar jetty-webapp-9.4.12.v20180830.jar jetty-servlet-9.4.12.v20180830.
jar jetty-security-9.4.12.v20180830.jar jetty-server-9.4.12.v20180830
.jar spring-core-4.3.20.RELEASE.jar snappy-0.4.jar shiro-core-1.4.0.j
ar classgraph-4.0.6.jar rmiio-2.1.2.jar jansi-1.17.1.jar shiro-cache-
1.4.0.jar shiro-crypto-hash-1.4.0.jar shiro-crypto-cipher-1.4.0.jar s
hiro-config-ogdl-1.4.0.jar shiro-config-core-1.4.0.jar shiro-event-1.
4.0.jar shiro-crypto-core-1.4.0.jar shiro-lang-1.4.0.jar slf4j-api-1.
7.25.jar commons-beanutils-1.9.3.jar commons-collections-3.2.2.jar ht
tpclient-4.5.6.jar commons-logging-1.2.jar javax.servlet-api-3.1.0.ja
r httpcore-4.4.10.jar jackson-core-2.9.8.jar javax.activation-api-1.2
.0.jar HdrHistogram-2.1.9.jar LatencyUtils-2.0.3.jar javax.transactio
n-api-1.3.jar jetty-xml-9.4.12.v20180830.jar jetty-http-9.4.12.v20180
830.jar jetty-io-9.4.12.v20180830.jar jline-2.12.jar jetty-util-9.4.1
2.v20180830.jar commons-codec-1.10.jar HikariCP-3.2.0.jar lucene-anal
yzers-phonetic-6.6.2.jar lucene-analyzers-common-6.6.2.jar lucene-que
ryparser-6.6.2.jar lucene-core-6.6.2.jar lucene-queries-6.6.2.jar geo
-0.7.1.jar netty-all-4.1.31.Final.jar grumpy-core-0.2.2.jar commons-m
ath3-3.2.jar protobuf-java-3.6.1.jar
Title: geode
Version: 1.9.2
Created-By: jdeppe
Merci. Vous avez raison, les dépendances Geode--Dépendances.jar est manifeste que, c'est pourquoi j'ai gardé les pots suivants dans '/ chemin / à / partagé / géode-lib /: Geode-Common-9.8.3.jar Geode-CQ-9.8.3 .jar Geode-JCA-9.8.3.RAR Geode-Gestion-9.8.3.jar Geode-core-9.8.3.jar Geode-dépendances.jar Geode-Lucene-9.8.3.jar Geode-Wan-9.8.3 .jar Lorsque je les emballe à l'intérieur de la guerre, l'application Bootsup mais échoue à la recherche = (gfconnectionfactory) template.lookup ("gfe / jca"); Dire: java.lang.classcastException: org.apache.geode.internal.ra.gfconnectionFactoryImpl incompatible avec org.apache.geode.ra.gfconnectionfactory
Je reçois Java.Lang.classcastException: org.apache.gfconnectionFactoryImpl Incompatible avec org.apache.geode.ra.gfconnectionfactory Par matière GFConnectionFactoryImpl et GFConnectionFactory sont chargés par différents chargeurs de classe. C'est pourquoi j'ai créé une bibliothèque partagée Geode-Lib. Partage entre Adaptateur de ressources JCA et application Web
pointez sur l'adaptateur de ressources à la place: P> Comme a été suggéré dans le commentaire d'Alasdair à la poste, votre chargeur de demande Ref ne pointe pas à la bonne chose. Dans votre extrait, il pointe de la liberme partagée et non de l'adaptateur de ressources: s> <resourceAdapter id="gemfireJCA" location="/path/to/geode-lib/geode-jca-9.8.3.rar">
<classloader commonLibraryRef="gemfireRaLib" />
</resourceAdapter>
<library id="gemfireRaLib">
<fileset dir="/path/to/geode-lib" includes="*.jar"/>
</library>
<webApplication contextRoot="apprRoot13" location="/path/to/mylocation.war" name="App13" id="App13">
<classloader commonLibraryRef="gemfireRaLib" />
</webApplication>
Merci @f Rowe, quand je le fais, j'obtiens l'erreur suivante Java.lang.classcastException: org.apache.gfconnectionfactoryImpl Incompatible avec org.apache.geode.ra.gfconnectionfactory Il est gfconnectionFactoryImpl de JCA Classloader ne peut pas être converti en GFConnectionFactory de Webapplication. La délégation de classier est parentfirst. Quand je supprimais tout Geode - *. Jar hors de la guerre et se référer sont SharedLib I Obtenir une classe non trouvée
Merci beaucoup pour votre réponse. Voici la cause première de la question.
Pour résoudre ce problème, je peux suivre l'une des solutions ci-dessous: P>
Déployer gemfirejca et guerre dans une seule oreille. Pack geode-jca.rar avec Geode - *. Jar et geode-dépendances.jar en tant que bibliothèque et guerre communes. P>
Veuillez noter: ces geode - *. Le pot ne doit pas être dans web-inf / lib de guerre.
Voici l'oreille:
Connexion de la poignée via le code source: p> Nettoyer la connexion lors de l'arrêt: p>
App13.ear:
|
| --GEMFIRE-JCA-9.8.3.RAR
| --WebApp13.war (sans Geode - *. JAR)
| --Lib
| | --Gede-commun-9.8.3.jar
| | --gede-cq-9.8.3.jar
| | --Gede-Gestion-9.8.3.jar
| | --geode-core-9.8.8.3.jar
| | --Gede-dépendances.jar
| | --Gede-Lucene-9.8.8.3jar
| | --geode-wan-9.8.3.jar
| --Meta-inf
| | --Application.xml (avec connecteur de module pour gemfirejca à l'aide de gemfire-jca-9.8.3rar)
code> p>
solution 2: h2>
Je n'ai pas essayé cela, mais en supposant que vous souhaitiez utiliser les classes de la RA dans votre application, vous devez définir l'attribut WebApplication / Classloader ClassProviderref pour référencer l'adaptateur de ressources. Donc, ce:
merci, mais quand je fais cela, j'obtiens l'erreur suivante Java.lang.classcastException: org.apache.gfconnectionFactoryImpl incompatible avec org.apache.geode.ra.gfconnectionfactory Il est gfconnectionfactoryImpl de JCA Classloader ne peut pas être converti. dans gfconnectionfactory de webapplication. La délégation de classier est parentfirst.