Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Help with Null Embedded Jetty Server Session

Hi,

I figured out what the issue was. It turns out I wasn't configuring Jersey properly. Once I changed my code to use Jersey 2 it worked.

// 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/*");

Thank you all of the help!

    Jennifer
Inactive hide details for Jennifer Coston ---05/18/2016 10:28:45 AM---Hi Simone, This is actually a simplified version of a morJennifer Coston ---05/18/2016 10:28:45 AM---Hi Simone, This is actually a simplified version of a more complicated program. I am

From: Jennifer Coston <Jennifer.Coston@xxxxxxxxxxxx>
To: JETTY user mailing list <jetty-users@xxxxxxxxxxx>
Cc: jetty-users-bounces@xxxxxxxxxxx
Date: 05/18/2016 10:28 AM
Subject: Re: [jetty-users] Help with Null Embedded Jetty Server Session
Sent by: jetty-users-bounces@xxxxxxxxxxx




Hi Simone,

This is actually a simplified version of a more complicated program. I am trying to translate an existing program that uses regular jetty into one that uses embedded Jetty. I have an API that is not getting exposed due to a configuration issue in Jetty (I spent a few hours yesterday working with the Swagger team, so I know the issue isn't there). From reading the logging statements the only obvious issue I could see was that the session was null, so that is what I was trying to fix. However, it is entirely possible I miss diagnosed the root issue. Do you have any suggestions? Here is the code:


package com.my.company;


import java.util.EnumSet;


import javax.servlet.DispatcherType;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;


import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.config.DefaultJaxrsConfig;
import io.swagger.jaxrs.config.SwaggerContextService;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jersey.config.JerseyJaxrsConfig;
import io.swagger.models.Contact;
import io.swagger.models.Info;
import io.swagger.models.License;
import io.swagger.models.Swagger;


import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.session.HashSessionIdManager;
import org.eclipse.jetty.server.session.HashSessionManager;
import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.servlet.DefaultServlet;
//import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletContainer;
import org.jhades.JHades;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.eclipse.jetty.webapp.WebAppContext;


import com.my.company.swagger.api.HelloApi;
import com.my.companyswagger.api.HelloApiService;
import com.my.company.swagger.api.util.Bootstrap;


public class MyApp {


private static final Logger LOGGER = LoggerFactory.getLogger(IAFApp.class);
private static ApplicationContext appContext = new AnnotationConfigApplicationContext(
"com.my.company");
private static final int SERVER_PORT = 12043;


public static void main(String[] args) throws Exception {


// Create Embedded Jetty server
Server jettyServer = new Server();


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


jettyServer.setHandler(servletContextHandler);


// Add default servlet
servletContextHandler.addServlet(org.eclipse.jetty.servlet.DefaultServlet.class, "/*");


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


// Use a servlet holder to manage Jersey services


// Setup API resources
ServletHolder jerseyServlet = servletContextHandler.addServlet(
ServletContainer.class, "/api/*");
jerseyServlet.setInitOrder(1);
jerseyServlet
.setInitParameter(
"com.sun.jersey.config.property.packages",
"io.swagger.jaxrs.json;io.swagger.jaxrs;io.swagger.jaxrs.listing;com.my.company.swagger.api");
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(
"com.sun.jersey.config.feature.DisableWADL", "true");
jerseyServlet
.setInitParameter(
"jersey.config.server.provider.classnames",
"org.glassfish.jersey.filter.LoggingFilter;org.glassfish.jersey.media.multipart.MultiPartFeature");


// Setup Swagger Servlet
ServletHolder swaggerServlet = servletContextHandler.addServlet(
JerseyJaxrsConfig.class, "/swagger-core");
swaggerServlet.setInitOrder(2);
swaggerServlet.setInitParameter("api.version", "1.0.0");
swaggerServlet.setInitParameter("description", "Hello World!");
swaggerServlet.setInitParameter("swagger.api.title",
"Swagger Server Test");
swaggerServlet.setInitParameter("swagger.api.basepath",
"
http://localhost:" + SERVER_PORT + "/api");
swaggerServlet.setInitParameter("swagger.pretty.print", "true");


jettyServer.setHandler(servletContextHandler);


// Start the server
jettyServer.start();
System.out.println("SERVER DUMP AFTER START" + jettyServer.dump());


testHello();
jettyServer.join();


}


/**
* Test the hello functionality to make sure it is working
*/
private static void testHello() {
HelloApiService helloApiService = (HelloApiService) appContext
.getBean("HelloApiService");
LOGGER.debug("Printing {}", helloApiService.getHelloApi());
System.out.println(helloApiService.getHelloApi());
}


/**
* Get the application context
*/
public static ApplicationContext getApplicationContext() {
return appContext;
}
}


Here is the jetty configuration in my existing pom.xml:

<!--
Jetty Setup -->
<
plugin>
<
groupId>org.codehaus.mojo</groupId>
<
artifactId>exec-maven-plugin</artifactId>
<
version>1.5.0</version>
<
executions>
<
execution>
<
goals>
<
goal>java</goal>
</
goals>
</
execution>
</
executions>
<
configuration>
<
mainClass>com.my.company.MyApp</mainClass>
<
classpathScope>runtime</classpathScope>
</
configuration>
</
plugin>

And the old one that worked:

<
plugin>
<
groupId>org.eclipse.jetty</groupId>
<
artifactId>jetty-maven-plugin</artifactId>
<
configuration>
<
webAppConfig>
<
contextPath>/</contextPath>
</
webAppConfig>
<
webAppSourceDirectory>target/${project.artifactId}-${project.version}</webAppSourceDirectory>
<
webDefaultXml>${project.basedir}/conf/jetty/webdefault.xml</webDefaultXml>
<
stopPort>8079</stopPort>
<
stopKey>stopit</stopKey>
<
connectors>
<
connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<
port>8080</port>
<
maxIdleTime>60000</maxIdleTime>
<
confidentialPort>8443</confidentialPort>
</
connector>
</
connectors>
</
configuration>
<
executions>
<
execution>
<
id>start-jetty</id>
<
phase>pre-integration-test</phase>
<
goals>
<
goal>run</goal>
</
goals>
<
configuration>
<
scanIntervalSeconds>0</scanIntervalSeconds>
<
daemon>true</daemon>
</
configuration>
</
execution>
<
execution>
<
id>stop-jetty</id>
<
phase>post-integration-test</phase>
<
goals>
<
goal>stop</goal>
</
goals>
</
execution>
</
executions>
</
plugin>


Thanks!
    Jennifer


Inactive hide details for Simone Bordet ---05/18/2016 10:11:29 AM---Hi, On Wed, May 18, 2016 at 3:20 PM, Jennifer CostonSimone Bordet ---05/18/2016 10:11:29 AM---Hi, On Wed, May 18, 2016 at 3:20 PM, Jennifer Coston

From:
Simone Bordet <sbordet@xxxxxxxxxxx>
To:
JETTY user mailing list <jetty-users@xxxxxxxxxxx>
Date:
05/18/2016 10:11 AM
Subject:
Re: [jetty-users] Help with Null Embedded Jetty Server Session
Sent by:
jetty-users-bounces@xxxxxxxxxxx




Hi,

On Wed, May 18, 2016 at 3:20 PM, Jennifer Coston
<Jennifer.Coston@xxxxxxxxxxxx> wrote:
> But I am still not seeing the session information:
>
> Request = Request(GET //localhost:12043/)@968bbe8
> Response = HTTP/1.1 200
> Date: Wed, 18 May 2016 13:00:04 GMT
>
>
> Create = false
> no session

This is expected.

You call request.getSession(false) which does *not* create the session.
It only returns it if it has been previously created.

--
Simone Bordet
----

http://cometd.org
http://webtide.com
Developer advice, training, services and support
from the Jetty & CometD experts.
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

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

GIF image


Back to the top