2009-06-11 6 views
2

Je suis nouveau à EJB3 et je manque quelque chose en ce qui concerne l'accès à un haricot @Remote @Stateless déployé en tant que module ejb dans un fichier oreille. Je veux accéder à un haricot distant dans lima.ear de soup.ear.une oreille pour appeler ejb3 à distance sur une autre oreille JBoss

Voici ce que je fais maintenant (un peu abrégé):

//deployed under lima.ear 
@Remote 
@Stateless 
public interface LimaBean { 
    String sayName(); 
} 

Je veux mettre haricot de Lima dans la soupe:

//deployed in soup.ear 
@Stateless 
public class Soup implements SoupLocal { 

    @EJB 
    private LimaBean limaBean; 

    public String taste() { 
     return limaBean.sayName(); 
    } 

} 

Quand je démarre JBoss je reçois l'erreur suivante:

java.lang.RuntimeException: impossible de résoudre le nom JNDI global de @EJB pour le conteneur Soupe: classe de référence: com.example.LimaBean ejbLink: non utilisé par les EJB

J'ai eu du mal à trouver ce que ce ejbLink est sur le point, si tel est le droit chemin pour aller vers le bas.

Si je déploie comme un fichier haricot de Lima jar dans jboss puis tout fonctionne très bien!

Je couru accross un article qui avait une section intitulée "2.5.3 Références entre les haricots dans différents pots et oreilles différentes."

(http://jonas.ow2.org/doc/howto/jboss2_4-to-jonas3_0/html/x111.html)

Exemple de fichier jboss.xml pour SB_BrowseRegions:

<jboss> 
    <session> 
     <ejb-name>SB_BrowseRegions</ejb-name> 
     <ejb-ref> 
      <ejb-ref-name>ejb/Region</ejb-ref-name> 
      <jndi-name>protocol://serverName/directory/RegionHome</jndi-name> 
     </ejb-ref> 
    </session> 
</jboss> 

Si je touche le soup.ear, après JBoss démarre alors il déploie bien, donc je suppose que je dois préciser une dépendance comme l'article ci-dessus dit.

Mais même après déploie alors je reçois une erreur lors de l'accès à la distance haricot de Lima:

Causée par: java.lang.IllegalArgumentException: Impossible de définir com.soup.Soup.limaBean sur le terrain com.soup.LimaBean à $ Proxy147 à sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (UnsafeFieldAccessorImpl.java:146) à sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (UnsafeFieldAccessorImpl.java:150) à sun.reflect.UnsafeObjectFieldAccessorImpl.set (UnsafeObjectFieldAccessorImpl.java:63) à java.lang.reflect.Field.set (Field.java:657) à org.jboss.injection.JndiFieldInjector.in ject (JndiFieldInjector.java:115) ... 49 plus

J'ai essayé quelques petites choses, mais si quelqu'un peut me pointer dans la bonne direction à ce sujet, je l'apprécierais.

Répondre

2

Il semble que les propriétés JNDI doivent être réglés comme si elle était un client distant en dehors du serveur d'application en raison de l'isolement de l'oreille, nous avons mis en place. Il suffit de spécifier l'URL de InitialContext et cela devrait faire l'affaire.

Questions connexes