j'ai un problème de conception:CXF conception service Web qestion
Je vais décrire le problème en utilisant un exemple:
@WebService
public interface GlossaryWebService {
@Secured("READ")
public void foo();
@Secured("READ")
public void goo();
}
Mise en œuvre:
@WebService
public class GlossaryWebServiceImpl implements GlossaryWebService{
private GlossaryService glossaryService;
@Override
public void foo() {
glossaryService.foo();
}
@Override
public void goo() {
glossaryService.goo();
}
}
Interface:
public interface GlossaryService {
public void foo();
public void goo();
}
Mise en œuvre:
public Class GlossaryServiceImpl extends GlossaryService{
@Override
public void foo() {
// impl
}
@Override
public void goo() {
// impl
}
}
Comme vous pouvez le voir, nous avons GlossaryWebServiceImpl la mise en œuvre GlossaryWebService et GlossaryServiceImpl mise en œuvre GlossaryService!
le problème est que le GlossaryWebServiceImpl agit en tant que façade (pour GlossaryService), et que cela provoque la duplication de code . Les méthodes de GlossaryService doivent également être dans GlossaryWebService et les méthodes de GlossaryServiceImpl doivent également figurer dans GlossaryWebServiceImpl!
Je peux enregistrer la création de GlossaryWebServiceImpl en rendant GlossaryServiceImpl pour implémenter GlossaryWebService et par cela nous aurons seulement 2 iterfaces et une implémentation!
mais cela fait aussi problème parce que je veux que l'annotation @Secured
(sur GlossaryWebService) à réaliser que lorsque vous passez par le service Web et non lors de l'appel aux méthodes sur GlossaryServiceImpl!
Si quelqu'un a une suggestion d'idée, ce serait très utile! Merci d'avance.