HI Keith,
@Resource injection is not currently supported. It will work for EE 6
when the right hooks are in place (namely JCDI and/or Managed beans).
Instead you can use:
@Context ServletContext servletContext;
See the following for more details:
https://jersey.dev.java.net/documentation/1.1.0-ea/user-
guide.html#d4e412
Or alternatively you could utilize Jersey's Spring or Guice (with
GuiceyFruit) integration to avail of @Resource support.
Paul.
On May 4, 2009, at 5:06 PM, Keith Sheppard wrote:
> Hi All,
>
> When I annotate my ServletContext with @Resource, I end up with a null
> reference. I'm assuming that I'm somehow misusing the @Resource
> annotation,
> but after some searching I haven't been able to figure out how what
> I am
> doing is wrong. Note that all of my restful annotations work as
> expected.
> Does anyone know why this doesn't work?
>
> Thanks!
> Keith
>
>
> Here is my system configuration:
> Mac OS-X Leopard (Intel)
> Java 1.5.0_16
> Jersey 1.0.3
> Tomcat 6.0.16
>
>
> Here is the class with the problem:
> ==============
> /*
> * Copyright (c) 2008 The Jackson Laboratory
> *
> * This software was developed by Gary Churchill's Lab at The Jackson
> * Laboratory (see http://research.jax.org/faculty/churchill).
> *
> * This is free software: you can redistribute it and/or modify
> * it under the terms of the GNU General Public License as published by
> * the Free Software Foundation, either version 3 of the License, or
> * (at your option) any later version.
> *
> * This software is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details.
> *
> * You should have received a copy of the GNU General Public License
> * along with this software. If not, see <http://www.gnu.org/
> licenses/>.
> */
>
> package org.jax.pubarray.restful;
>
> import java.io.InputStream;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> import javax.annotation.Resource;
> import javax.servlet.ServletContext;
> import javax.ws.rs.Consumes;
> import javax.ws.rs.FormParam;
> import javax.ws.rs.POST;
> import javax.ws.rs.Path;
> import javax.ws.rs.Produces;
> import javax.ws.rs.core.Response;
> import javax.ws.rs.core.Response.Status;
>
> import com.sun.jersey.spi.resource.Singleton;
>
> /**
> * A JAX-RS implementation of a table administration resource
> * @author <A HREF="mailto:keith.sheppard_at_jax.org">Keith Sheppard</A>
> */
> @Singleton
> @Path("/")
> public class TableAdministrationResource
> {
> private static final Logger LOG = Logger.getLogger(
> TableAdministrationResource.class.getName());
>
> @Resource
> private ServletContext servletContext;
>
> /**
> *
> */
> public TableAdministrationResource()
> {
> }
>
> /**
> * For uploading a candidate design file
> * NOTE: MIME type is HTML instead of text/plain for reasons
> documented
> * in the javadoc for GWT's FormPanel class
> * @param designFileFormat
> * the design file
> * @param designFileName
> * the file name
> * @param designFile
> * the data stream to convert
> * @return
> * if everything works we return a {_at_link Status#OK}
> with the
> given
> * file name. if we see a problem with the input we
> return a
> * {_at_link Status#BAD_REQUEST}
> */
> @Path("/candidate-design")
> @POST
> @Consumes("multipart/form-data")
> @Produces("text/html")
> public Response uploadDesignFile(
> @FormParam("designFileFormat") String designFileFormat,
> @FormParam("designFileName") String designFileName,
> @FormParam("designFile") InputStream designFile)
> {
> try
> {
> LOG.info("The servlet context is: " + this.servletContext);
> return Response.ok(designFileName +
> this.servletContext).build();
> }
> catch(Exception ex)
> {
> LOG.log(Level.SEVERE,
> "failed to upload design file",
> ex);
> return Response.status(Status.BAD_REQUEST).build();
> }
> }
>
> /**
> * For uploading a candidate data file
> * NOTE: MIME type is HTML instead of text/plain for reasons
> documented
> * in the javadoc for GWT's FormPanel class
> * @param dataFileFormat
> * the format to use
> * @param dataFileName
> * the name of the file being uploaded
> * @param dataFile
> * the stream of data from the file
> * @return
> * if everything works we return a {_at_link Status#OK}
> with the
> given
> * file name. if we see a problem with the input we
> return a
> * {_at_link Status#BAD_REQUEST}
> */
> @Path("/candidate-data")
> @POST
> @Consumes("multipart/form-data")
> @Produces("text/html")
> public Response uploadDataFile(
> @FormParam("dataFileFormat") String dataFileFormat,
> @FormParam("dataFileName") String dataFileName,
> @FormParam("dataFile") InputStream dataFile)
> {
> try
> {
> return Response.ok(dataFileName).build();
> }
> catch(Exception ex)
> {
> LOG.log(Level.SEVERE,
> "failed to upload data file",
> ex);
> return Response.status(Status.BAD_REQUEST).build();
> }
> }
>
> /**
> * For uploading a candidate annotation file
> * NOTE: MIME type is HTML instead of text/plain for reasons
> documented
> * in the javadoc for GWT's FormPanel class
> * @param annotationFileFormat
> * the format to use
> * @param annotationFileName
> * the file name to use
> * @param annotationFile
> * the annotation file
> * @return
> * if everything works we return a {_at_link Status#OK}
> with the
> given
> * file name. if we see a problem with the input we
> return a
> * {_at_link Status#BAD_REQUEST}
> */
> @Path("/candidate-annotations")
> @POST
> @Consumes("multipart/form-data")
> @Produces("text/html")
> public Response uploadAnnotationFile(
> @FormParam("annotationFileFormat") String
> annotationFileFormat,
> @FormParam("annotationFileName") String annotationFileName,
> @FormParam("annotationFile") InputStream annotationFile)
> {
> try
> {
> return Response.ok(annotationFileName).build();
> }
> catch(Exception ex)
> {
> LOG.log(Level.SEVERE,
> "failed to upload annotation file",
> ex);
> return Response.status(Status.BAD_REQUEST).build();
> }
> }
> }
> ==============
>
>
> Here is catalina.out:
> ==============
> kss_at_CATSKILL:~/bin/apache-tomcat/logs/> cat catalina.out
> May 4, 2009 10:52:16 AM
> org.apache.catalina.core.AprLifecycleListener init
> INFO: The APR based Apache Tomcat Native library which allows optimal
> performance in production environments was not found on the
> java.library.path:
> .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/
> java
> May 4, 2009 10:52:16 AM org.apache.coyote.http11.Http11Protocol init
> INFO: Initializing Coyote HTTP/1.1 on http-8080
> May 4, 2009 10:52:16 AM org.apache.catalina.startup.Catalina load
> INFO: Initialization processed in 408 ms
> May 4, 2009 10:52:17 AM org.apache.catalina.core.StandardService start
> INFO: Starting service Catalina
> May 4, 2009 10:52:17 AM org.apache.catalina.core.StandardEngine start
> INFO: Starting Servlet Engine: Apache Tomcat/6.0.16
> May 4, 2009 10:52:17 AM org.apache.catalina.startup.HostConfig
> deployWAR
> INFO: Deploying web application archive pub-array-gwt-server-1.0.war
> May 4, 2009 10:52:17 AM org.apache.catalina.loader.WebappClassLoader
> validateJarFile
> INFO:
> validateJarFile(/Users/kss/bin/apache-tomcat/webapps/pub-array-gwt-
> server-1.
> 0/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. See Servlet
> Spec 2.3,
> section 9.7.2. Offending class: javax/servlet/Servlet.class
> May 4, 2009 10:52:17 AM
> com.sun.jersey.api.core.ClasspathResourceConfig init
> INFO: Scanning for root resource and provider classes in the paths:
> /Users/kss/bin/apache-tomcat/webapps/pub-array-gwt-server-1.0/WEB-
> INF/lib
>
> /Users/kss/bin/apache-tomcat/webapps/pub-array-gwt-server-1.0/WEB-
> INF/classe
> s
> May 4, 2009 10:52:18 AM
> com.sun.jersey.api.core.ClasspathResourceConfig init
> INFO: Root resource classes found:
> class org.jax.pubarray.restful.TableAdministrationResource
> May 4, 2009 10:52:18 AM
> com.sun.jersey.api.core.ClasspathResourceConfig init
> INFO: Provider classes found:
> May 4, 2009 10:52:19 AM org.apache.catalina.core.StandardContext
> addApplicationListener
> INFO: The listener "listeners.ContextListener" is already configured
> for
> this context. The duplicate definition has been ignored.
> May 4, 2009 10:52:19 AM org.apache.catalina.core.StandardContext
> addApplicationListener
> INFO: The listener "listeners.SessionListener" is already configured
> for
> this context. The duplicate definition has been ignored.
> May 4, 2009 10:52:19 AM org.apache.coyote.http11.Http11Protocol start
> INFO: Starting Coyote HTTP/1.1 on http-8080
> May 4, 2009 10:52:19 AM org.apache.jk.common.ChannelSocket init
> INFO: JK: ajp13 listening on /0.0.0.0:8009
> May 4, 2009 10:52:19 AM org.apache.jk.server.JkMain start
> INFO: Jk running ID=0 time=0/17 config=null
> May 4, 2009 10:52:19 AM org.apache.catalina.startup.Catalina start
> INFO: Server startup in 2753 ms
> May 4, 2009 10:53:46 AM
> org.jax.pubarray.restful.TableAdministrationResource
> uploadDesignFile
> INFO: The servlet context is: null
> kss_at_CATSKILL:~/bin/apache-tomcat/logs/>
> ==============
>
>
> --
> Keith Sheppard
> Scientific Software Engineer
> The Jackson Lab
>
> (207) 288-6897
>
> JAX Mission:
> ³We discover the genetic basis for preventing, treating and curing
> human
> disease, and we enable research and education for the global
> biomedical
> community.²
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>