AEM6.5中osgi-jax-rs-connector已停用,求替代REST服务API
在AEM 6.5中替代Jersey OSGI连接器的REST API方案
在AEM 6.5中,官方推荐使用Sling JAX-RS Extensions作为旧Jersey osgi-jax-rs-connector的替代方案,这是一套完全适配AEM/Sling OSGI生态的JAX-RS实现,能彻底解决「HTTP ERROR 503 Jersey is not ready yet!」这类初始化冲突问题。
核心要点:
- 依赖替换:移除
jersey-all-2.22.2、publisher-5.3.1、provider-security-2.2这类第三方Jersey包,改用AEM自带的org.apache.sling.jaxrs-api和org.apache.sling.jaxrs-extensionsbundle,无需额外引入外部依赖。 - 实现方式:
- 编写标准JAX-RS资源类,使用
@Path、@GET、@POST等JAX-RS 2.0注解定义接口 - 通过Sling的OSGI注解(
@Component、@Service)将资源注册为服务,可选择直接注册资源类,或者继承javax.ws.rs.core.Application来批量注册资源
- 编写标准JAX-RS资源类,使用
- 原生适配:
- 无缝集成AEM的身份验证、资源解析、OSGI服务生命周期管理能力
- 避免第三方Jersey与AEM内部组件的版本冲突,彻底解决初始化就绪问题
示例实现片段:
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Service; @Component(service = MyRestResource.class) @Path("/myapi/v1") public class MyRestResource { @GET @Path("/hello") @Produces(MediaType.TEXT_PLAIN) public String getHello() { return "Hello from AEM Sling JAX-RS"; } }
内容的提问来源于stack exchange,提问作者Gana G
相关产品推荐
相关产品推荐

