Bonjour,
Je suis en train de développer un service (sous forme d'EJB3 sous SJSAS 9) qui me permet de travailler sur un repository (JSR 170 - Jackrabbit).
Les méthodes de cet EJB (ServiceRepositoryBean ) me permettent de créer des noeuds simples et complexes, et de lire leurs propriétés.
Depuis un autre EJB (en local), je n'ai aucun proplème en écriture.
En revanche dès que j'invoque une méthode censée me renvoyer une valeur (ex. la méthode getNameByUUID qui doit me renvoyer une String) celle-ci est null dans l'EJB appelant alors que je peux la logguée dans l'EJB d'accès ServiceRepository.
Je sait que le type de retour des méthodes EJB doivent être ceux de RMI (donc serializable ?). Je vois partout des exemples avec des retours de méthodes plus complexes qu'une simple String (ex : List<String>).
Comment se fait-il qu'aucun des mes retours de méthodes ne passent ?
Nota : Cet EJB est accessible en local et en remote.
L'EJB d'accès au repository :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 package ... import ... @Interceptors (com.common.interceptor.LogInterceptor.class) @Stateless (name="ServiceRepository") public class ServiceRepositoryBean implements ServiceRepositoryLocal, ServiceRepositoryRemote { @Resource (name="jcr/Repository") private Repository repository; private Logger log = Logger.getLogger ( this.getClass ().getName () ); private Session session; private Workspace workspace; private Node rootNode; private Node headNode; ... /** Creates a new instance of ServiceRepositoryBean */ public ServiceRepositoryBean () {} @PostConstruct public void postConstruct () throws Exception { Credentials credentials = new SimpleCredentials (login, password.toCharArray ()); session = repository.login (credentials); workspace = session.getWorkspace (); rootNode = session.getRootNode (); registerNameSpace (prefix, uri); headNode = addHeadNode (rootNodeName); } @PreDestroy public void logout () { session.logout (); } /* Si je log le getName ici, c'est bon, mais la valeur récupérée dans l'autre EJB est toujours null */ public String getNameByUUID (String targetUUID) throws Exception { return session.getNodeByUUID (targetUUID).getName (); } /*Pas de problème ici car pas de retour*/ public void setPropertyByUUID (String targetUUID, String propertyName, String propertyValue) throws Exception { session.getNodeByUUID (targetUUID).setProperty (propertyName, propertyValue); session.save (); } }
Partager