我有一个设计问题:CXF Web服务设计qestion
@WebService
public interface GlossaryWebService {
@Secured("READ")
public void foo();
@Secured("READ")
public void goo();
}
实现:
@WebService
public class GlossaryWebServiceImpl implements GlossaryWebService{
private GlossaryService glossaryService;
@Override
public void foo() {
glossaryService.foo();
}
@Override
public void goo() {
glossaryService.goo();
}
}
接口:
我会用一个例子说明问题
public interface GlossaryService {
public void foo();
public void goo();
}
执行:
public Class GlossaryServiceImpl extends GlossaryService{
@Override
public void foo() {
// impl
}
@Override
public void goo() {
// impl
}
}
正如你可以看到我们GlossaryWebServiceImpl实施GlossaryWebService 和GlossaryServiceImpl实施GlossaryService!
问题是GlossaryWebServiceImpl充当facade(用于GlossaryService),并且此 导致代码重复。 GlossaryService中的方法也需要位于GlossaryWebService 中,而GlossaryServiceImpl中的方法也需要位于GlossaryWebServiceImpl中!
我可以通过让GlossaryServiceImpl实现GlossaryWebService 来保存GlossaryWebServiceImpl的创建,我们将只有2个iterfaces和一个实现!
但这也成为问题,因为我希望@Secured
注释(on GlossaryWebService) 仅在通过Web服务时执行,而不是在调用GlossaryServiceImpl上的方法时执行!
如果有人有任何想法的建议,这将是非常有益的! 在此先感谢。