0
votes

Problèmes de classes: Gemfire JCA Adaptateur de ressources dans IBM WebSphere LibertyBase

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


2 commentaires

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.


3 Réponses :


0
votes

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


2 commentaires

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



0
votes

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> xxx pré>

pointez sur l'adaptateur de ressources à la place: P>

<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>


1 commentaires

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



0
votes

Merci beaucoup pour votre réponse. Voici la cause première de la question.

  • en liberté Il n'y a pas de singleclassloader par politique d'application. Le chargeur de classe d'un adaptateur de ressources JCA est différent et Webapplication est différent.
  • Geode - *. Le pot est chargé par 2 chargeurs de classes différents.
  • GFConnectionFactory fourni par gemfirejca ra est différent de l'application. Par conséquent, il est impossible de «CLASS CAST» GFConnectionFactory chargé par JCA Classloader dans le chargeur de classes d'application.

    Pour résoudre ce problème, je peux suivre l'une des solutions ci-dessous:

    Solution 1:

    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.

    Veuillez noter: ces geode - *. Le pot ne doit pas être dans web-inf / lib de guerre. Voici l'oreille: 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)

    solution 2:

    Connexion de la poignée via le code source: xxx

    Nettoyer la connexion lors de l'arrêt: xxx


0 commentaires