Domanda

Immagino sia semplice, ma non riesco a trovare la giusta combinazione di termini di ricerca per ottenere una risposta. Se ho un'applicazione multi-modulo, come posso ottenere i bean nel modulo A disponibili per i bean nel modulo B.

L'impostazione del progetto è un po 'simile a questa:

project.ear/module-a.jar/resources/beans.xml
project.ear/module-a.jar/java/foo/bar.class
project.ear/module-b.war/java/foo/barFactory.class

Il bean.xml non è accessibile da classpath o filesystem. C'è un modo per fare questo? O dovrei fare tutto diversamente?

È stato utile?

Soluzione

Penso che esista una soluzione più semplice di questi 3 skaffman sopra menzionati.

  1. Inserisci in un modulo-b.war / WEB-INF / web.xml queste righe:

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

    classpath*:/resources/beans.xml

    </param-value>

    </context-param>

    Ciò consente di caricare ogni /resources/beans.xml da qualsiasi pezzo di percorso di classe (cioè qualsiasi vaso su percorso di classe) che è abbastanza per te.

  2. Dovresti caricare un module-a.jar come parte di module-b.war (module-a.jar risiede nella posizione module-b.war / WEB-INF / lib).

Ho una granularità molto simile nel mio progetto: business-logic.jar con la configurazione dei suoi bean e frontend.war che usa i bean configurati in quello precedente tramite ref = " someBean " ;. Funziona.

Altri suggerimenti

Probabilmente il tuo appserver sta usando diversi classloader per ciascun modulo nell'EAR, impedendo a un modulo di vedere le risorse in un altro. Questo è il comportamento predefinito dei classloader JavaEE.

O devi

  • riconfigura il tuo appserver per usare un " unificato " classloader nell'intero EAR (che è altamente specifico di appserver, ma ottimo se riesci a farlo funzionare), oppure
  • impacchetta tutto in un modulo (ad es. il tuo WAR potrebbe contenere tutto), oppure
  • dichiara un manifest formale per il modulo WAR, consentendogli di dichiarare le sue dipendenze sui singoli moduli JAR, che dovrebbe consentire a WAR di vedere le risorse nel modulo JAR.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top