猿问

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

可以在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。


守候你守候我
浏览 126回答 1
1回答

明月笑刀无情

当然,您可以使用注释来做到这一点。您将必须创建一个类,该类从注解中扩展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;/**&nbsp;* @author Shiva Saxena&nbsp;*&nbsp;*/@WebServlet(name = "CarServiceServlet", value = "/CarService.svc/*", initParams = {&nbsp; &nbsp; @WebInitParam(name = "javax.ws.rs.Application", value = "org.apache.olingo.odata2.core.rest.app.ODataApplication"),&nbsp; &nbsp; @WebInitParam(name = "org.apache.olingo.odata2.service.factory", value = "com.sample.CarServiceFactory") })public class MyServlet extends CXFNonSpringJaxrsServlet {&nbsp; &nbsp; Logger logger = LoggerFactory.getLogger(MyServlet.class);&nbsp; &nbsp; private static final long serialVersionUID = -5663461069269732798L;&nbsp; &nbsp; @Override&nbsp; &nbsp; public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {&nbsp; &nbsp; &nbsp; &nbsp; // It is not necessory to override this function.Its here just for logging and better understanding&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; logger.info("Call intercepted by:" + this.getClass().getName());&nbsp; &nbsp; &nbsp; &nbsp; super.service(req, res);&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答