簡體   English   中英

Cxf Web服務設計問題

[英]Cxf Web service design 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
   }
}

正如您所看到的,我們已經實現了GlossaryWebService的GlossaryWebServiceImpl和實現了GlossaryService的GlossaryServiceImpl!

問題是GlossaryWebServiceImpl充當Facade(對於GlossaryService),這會導致代碼重復。 GlossaryService中的方法也必須在GlossaryWebService中,並且GlossaryServiceImpl中的方法也必須在GlossaryWebServiceImpl中!

通過使GlossaryServiceImpl實現GlossaryWebService,可以節省GlossaryWebServiceImpl的創建,這樣,我們只有2個Iterfaces和1個實現!

但這也造成了問題,因為我希望僅在通過Web服務而不是在調用GlossaryServiceImpl的方法時才執行@Secured注釋(在GlossaryWebService上)!

如果有人有任何想法建議,那將非常有幫助! 提前致謝。

由於GlossaryWebServiceImpl是訪問Web服務的入口點,因此我將所有與Web Service相關的設置(角色,其他注釋)放入其中,並將所有業務邏輯放入GlossaryServiceImpl中:

@WebService
public class GlossaryWebService{


   private GlossaryService glossaryService;

   @Secured("READ")
   public void foo() {
      glossaryService.foo();
   }

   @Secured("READ")
   public void goo() {
      glossaryService.goo();
   } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM