2014-11-24 3 views
1

Может ли кто-нибудь помочь мне работать с этим. Это мой первый раз, чтобы создать спокойный api.Servlet.service() для сервлета [Служба Джерси REST] java.lang.NullPointerException

web.xml

<display-name>1FxAll</display-name> 
<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class> 
    org.glassfish.jersey.servlet.ServletContainer 
</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.sample.blitz</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/api/*</url-pattern> 
    </servlet-mapping> 

UserController.java

package com.sample.blitz; 

@Path("/user") 
public class UserController{ 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String test(){ 
     return "user"; 
    } 
} 

полная ошибка StackTrace.

SEVERE: Servlet.service() for servlet [Jersey REST Service] in context with path [/1FxAll] threw exception [java.lang.NullPointerException] with root cause 
java.lang.NullPointerException 
    at com.sample.blitz.UserController.test(UserController.java:28) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) 
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:384) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:342) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:101) 
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1030) 
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:373) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

это продолжают говорить о том, что ошибка в UserController строке 28, но когда я проверяю нет линии 28.

Я использую Tomcat 7.0. Я также попытался переключиться на старую рыбку, но у меня такая же ошибка.

Спасибо ..

+0

Я думаю, что есть вызов '/ 1FxAll' пути не'/user'? Как вы дали вызов 'UserController's test()'? – OO7

+0

Это адрес, который я использовал. http: // localhost: 8080/1FxAll/api/user – blitzen12

+0

Является ли '/ 1FxAll' отображаемым именем вашего приложения или что-то еще? – OO7

ответ

0

Удалить из /@Path("/user") & сделать это как @Path("user"). Bcoz, у уже данный путь, как /api/* в <url-pattern> я думаю, что есть Продублировать /

Изменить ваш UserController класс, как

package com.sample.blitz; 

@Path("user") 
public class UserController{ 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String test(){ 
     return "user"; 
    } 
} 
+3

Это звучит маловероятно. [Спецификация Джерси] (https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e1721) говорит: «Значение A @Path может начинаться или не начинаться с«/», это не имеет значения. Аналогично, по умолчанию значение @Path может заканчиваться или не заканчиваться на «/», оно не имеет значения, и поэтому URL-адреса запросов, которые заканчиваются или не заканчиваются на «/», будут совпадать ». – botchniaque

+0

это неправильно, это не имеет значения для пользователя или не использует '/' –

1

Я просто разместил мой ответ здесь.

Я не уверен, что это относится к делу с glassfish 4.0 и 4.1, но после того, как я изменить GlassFish версии от 4.0 до 4.1 и удалить файл из джерси Lib папки, кажется, работает, но в котом я до сих пор получил NullPointerException. Это будет работать только на glassfish 4.1.

0

Вы должны добавить следующую зависимость для RESTFull

<dependency> 
    <groupId>org.glassfish.jersey.ext</groupId> 
    <artifactId>jersey-spring3</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.glassfish.jersey.ext</groupId> 
    <artifactId>jersey-bean-validation</artifactId> 
</dependency> 
-1

При создании объекта службы создать его экземпляр с новым ключевым словом.

Xservice x = new Xservice(); 
Смежные вопросы