Bonjour,

Voici mon problème, j'ai un service central dans mon application web :
MyServiceImpl qui implemente l'interface MyService.

Ce service permet de me renvoyer certaines informations communes à tous les controllers dont voici les méthodes définies dans l'interface :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
public String getMessageInformatif();
 
public boolean isPlageHoraireMaintenance();
mon implémentation de ce service a donc un setter pour le message informatif, et un getter et un setter pour l'heure de début de la plage de maintenance et l'heure de fin de la plage de maintenance.

j'ai donc dans mon implémentation les méthodes suivantes :

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
 
@Override
public String getMessageInformatif() {...}
 
public void setMessageInformatif(String message) {...}
 
@Override
public boolean isPlageHoraireMaintenance() {...}
 
public void setDebutPlageMaintenance(String heure) {...}
 
public String getDebutPlageMaintenance() {...}
 
public void setFinPlageMaintenance(String heure) {...}
 
public String getFinPlageMaintenance() {...}
Je voudrais pouvoir modifier ces valeurs en JMX, j'ai donc le fichier de configuration spring suivant :

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
 
<bean id="myService" class="net.mycie.MyServiceImpl" >
...
</bean>
 
<!-- Publish Services as JMX -->
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
   <property name="server" ref="mbeanServer" />
 
   <property name="beans">
      <map>
         <entry key="mycie:name=myservice" value-ref="myService" />
 
     ...
      </map>
   </property>
 
   <property name="assembler">
      <bean class="org.springframework.jmx.export.assembler.MethodNameBasedMBeanInfoAssembler">
         <property name="methodMappings">
            <props>
  ...
 
               <prop key="mycie:name=myservice">getMessageInformatif,setMessageInformatif,isPlageHoraireMaintenance,setDebutPlageMaintenance,getDebutPlageMaintenance,setFinPlageMaintenance,getFinPlageMaintenance</prop>
            </props>
         </property>
      </bean>
   </property>
</bean>

Quand je démarre la JConsole, je ne trouve que les deux méthodes de l'interface dans mon bean JMX, que j'utilise la méthode managedMethods ou methodMappings.

Avez vous une idée de pourquoi ?

La seule façon que j'ai trouvé de publier mes méthodes est de les déclarer dans l'interface. Ce qui ne me plaît pas beaucoup.

N'hésitez pas à me formuler toute remarque si je n'ai pas été clair.
Je vous remercie par avance.