[英]Web service that works as REST and SOAP using Java/Jersey
我是否可以同時擁有REST和SOAP接口的服務? 我目前使用EJB和Jersey在Java中實現了REST服務:
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Stateless
@Path("test")
public class TestExternalService {
@EJB
private com.test.ejb.db.TestService testService;
@GET
@Path("/status")
@Produces("text/*")
public String status() {
return "ok";
}
}
如何在我的類中進行更改以實現SOAP接口?
基本上, Jersey
是JAX-RS
實現,因此您不能在此處擁有SOAP Web服務。 你可以使用Apache CXF ,它是JAX-RS
和JAX-WS
,你可以在兩種架構風格中組合你的web服務。
這是一個將實現公開為rest和soap web服務的解決方案。 與zack在評論中提出的相似。 如果您已經擁有支持jax-rs的服務,則可能需要進行一些重構。
解決方案是擁有兩組接口和實現。 一個支持jax-rs和一個jax-ws。 您仍然可以在ejb中完成處理。
例,
不要用jax-rs注釋你的ejb(比如EService)。
有一個接口X和Ximpl類來支持restful調用。 這將支持jax-rs,所以基本上用jax-rs注釋。 當然,這仍然可以使用球衣。 Ximpl將引用EJB EService並將處理委托給它。
有一個接口Y和YImpl來支持基於soap的呼叫。 這將支持jax-ws,因此將使用jax-ws進行注釋。 Yimpl將引用EJB EService並將處理委托給它。
如果您有Web部署描述符,則在Web部署描述符中定義不同的servlet並映射rest和soap。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.