簡體   English   中英

使用Java / Jersey作為REST和SOAP的Web服務

[英]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接口?

基本上, JerseyJAX-RS實現,因此您不能在此處擁有SOAP Web服務。 你可以使用Apache CXF ,它是JAX-RSJAX-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.

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