为了账号安全,请及时绑定邮箱和手机立即绑定

在没有web.xml的情况下注册Olingo servlet

在没有web.xml的情况下注册Olingo servlet

守候你守候我 2021-04-09 09:52:42
可以在Olingo中使用@WebServlet注释吗?我想避免在我们的条目中创建条目:web.xml<servlet>    <servlet-name>CarServiceServlet</servlet-name>    <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>    <init-param>        <param-name>javax.ws.rs.Application</param-name>        <param-value>org.apache.olingo.odata2.core.rest.app.ODataApplication</param-value>    </init-param>    <init-param>        <param-name>org.apache.olingo.odata2.service.factory</param-name>        <param-value>com.sample.CarServiceFactory</param-value>    </init-param>    <load-on-startup>1</load-on-startup></servlet><servlet-mapping>    <servlet-name>CarServiceServlet</servlet-name>    <url-pattern>/CarService.svc/*</url-pattern></servlet-mapping>该代码是从olingo-sample存储库中获取的。也许有一种方法@WebInitParams可以创建init参数,但是我必须注释一下- class X extends ODataServiceFactory?它慷慨地工作吗?编辑:我正在使用Olingo V2和Tomcat 8。
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

当然,您可以使用注释来做到这一点。您将必须创建一个类,该类从注解中扩展CXFNonSpringJaxrsServletinit参数并在其中传递@WebServlet。


以下是复制您的代码的代码web.xml。


package com.sample;


import java.io.IOException;


import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebInitParam;

import javax.servlet.annotation.WebServlet;


import org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


/**

 * @author Shiva Saxena

 *

 */

@WebServlet(name = "CarServiceServlet", value = "/CarService.svc/*", initParams = {

    @WebInitParam(name = "javax.ws.rs.Application", value = "org.apache.olingo.odata2.core.rest.app.ODataApplication"),

    @WebInitParam(name = "org.apache.olingo.odata2.service.factory", value = "com.sample.CarServiceFactory") })

public class MyServlet extends CXFNonSpringJaxrsServlet {


    Logger logger = LoggerFactory.getLogger(MyServlet.class);


    private static final long serialVersionUID = -5663461069269732798L;


    @Override

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {


        // It is not necessory to override this function.Its here just for logging and better understanding 

        logger.info("Call intercepted by:" + this.getClass().getName());

        super.service(req, res);

    }


}


查看完整回答
反对 回复 2021-04-28
  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信