Hello,

I am trying to configure embedded jetty so that it scans for the
@WebListener annotation. I have added the Jetty-annotations library to my
pom.xml file. From looking at this documentation, it looks like I also need
to set metadata-complete to false. The problem is that most of the
documentation references a web.xml or jetty.xml which I don't have. Is it
possible to configure Jetty to scan for annotations without it? Is there a
way I can configure the server to tell it where the @WebListener is?

Here is the method where I am creating and configuring the server:

public static void start() throws Exception {
                // Create Embedded Jetty server
                jettyServer = new Server();

                // Configure for Http
                 HttpConfiguration http_config = new HttpConfiguration();
                 http_config.setSecureScheme("https");
                 http_config.setSecurePort(8443);
                 http_config.setOutputBufferSize(32768);

                 ServerConnector http = new ServerConnector(jettyServer,
                 new HttpConnectionFactory(http_config));
                 http.setPort(HTTP_SERVER_PORT);
                 http.setIdleTimeout(30000);
                 jettyServer.addConnector(http);

                // Add ServletContextHandler
                ServletContextHandler servletContextHandler = new
ServletContextHandler(
                                ServletContextHandler.SESSIONS);
                servletContextHandler.setContextPath("/");

                jettyServer.setHandler(servletContextHandler);

                // Add API Origin Filter
                servletContextHandler.addFilter(
                                
"com.my.company.swagger.api.util.ApiOriginFilter",
"/*",
                                EnumSet.of(DispatcherType.INCLUDE,
DispatcherType.REQUEST));

                // Setup API resources (Jersey)
                ServletHolder jerseyServlet = new ServletHolder(new
ServletContainer());
                jerseyServlet.setInitOrder(1);
                jerseyServlet.setInitParameter(

"com.sun.jersey.spi.container.ContainerRequestFilters",

"com.sun.jersey.api.container.filter.PostReplaceFilter");
                jerseyServlet.setInitParameter(
                                "com.sun.jersey.api.json.POJOMappingFeature",
"true");
                jerseyServlet
                                .setInitParameter(
                                                
ServerProperties.PROVIDER_PACKAGES,

"io.swagger.jaxrs.json;io.swagger.jaxrs;io.swagger.jaxrs.listing;com.my.company.swagger.api");
                jerseyServlet.setInitParameter
(ServerProperties.WADL_FEATURE_DISABLE,
                                "true");
                jerseyServlet
                                .setInitParameter(
                                                
ServerProperties.PROVIDER_CLASSNAMES,

"org.glassfish.jersey.filter.LoggingFilter;org.glassfish.jersey.media.multipart.MultiPartFeature");
                servletContextHandler.addServlet(jerseyServlet, "/api/*");

                jettyServer.setHandler(servletContextHandler);

                // Start the server
                jettyServer.start();
        }

And this is my class with the @WebListener

package com.my.company.swagger.api.util;

import io.swagger.jaxrs.config.BeanConfig;

import javax.annotation.Resource;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@WebListener
public class SwaggerInitializer implements ServletContextListener {

        private static final Logger LOGGER = LoggerFactory.getLogger
(SwaggerInitializer.class);

    public void contextInitialized(ServletContextEvent servletContextEvent)
{
        LOGGER.debug("######### Configuring Swagger with BeanConfig
#########");
        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion( "1.0.0" );
        beanConfig.setResourcePackage( "com.my.company.swagger.api" );
        beanConfig.setBasePath( "http://localhost:12043/api-docs"; );
        beanConfig.setDescription( "Hello World!" );
        beanConfig.setTitle( "Swagger Test Server" );
        beanConfig.setScan( true );
    }

    public void contextDestroyed(ServletContextEvent servletContextEvent) {
    }

}

Thank you!

Jennifer
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to