Tom O'Brien Tom O'Brien - 1 month ago 7
reST (reStructuredText) Question

JAX-RS Rest services stopped deploying on Eclipse Glassfish

I've been developing a Jersey JAX-RS application on Glassfish 4.1.1 using Eclipse for about a year now. Earlier today, I was making some normal changes to some of the classes, but Eclipse was not updating the classes when I would try and do a build. I searched here on Stack Overflow, and found this answer.

So I did the following steps:


  1. Project > Clean on the project you're working on.

  2. Project > Build Automatically - turned on so the code rebuilds in your workspace on saved changes.

  3. Window > Preferences and make sure your Installed JRE's and Compilers are matching Java versions



My installed jre is
jdk1.8.0_73
and my compiler compliance level is 1.8

Now when I make a change to a Java file, the server tab below will still not show


[Started, Republish]


like it should but stays at


[Started, Synchronized].


It gets worse. Now when I try and hit the rest services using POSTMAN and queries that I've used a million times it returns a 404 saying the requested resource is not available.

So basically none of the REST services are starting properly for some reason.

If I hit the index.html for my application it gets served up fine, but when AngularJS tries to load stuff from the REST backend, it gets fed the 404 error.

I've haven't made any changes to Eclipse/Glassfish, as it was working perfectly yesterday. This is totally stopping development. Anybody know what might have gone wrong? It is extremely mind-explodingly annoying.

I'm no expert in Eclipse or Glassfish or jersey, so please go easy on me :)

Here are the build logs for when I start the server, maybe somebody can notice whats going on....

2016-10-02T15:24:47.575+0100|Info: Running GlassFish Version: GlassFish Server Open Source Edition 4.1.1 (build 1)
2016-10-02T15:24:47.576+0100|Info: Server log file is using Formatter class: com.sun.enterprise.server.logging.ODLLogFormatter
2016-10-02T15:24:47.664+0100|Info: Realm [admin-realm] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
2016-10-02T15:24:47.665+0100|Info: Realm [file] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
2016-10-02T15:24:47.670+0100|Info: Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] successfully created.
2016-10-02T15:24:47.775+0100|Info: Authorization Service has successfully initialized.
2016-10-02T15:24:47.825+0100|Info: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry
2016-10-02T15:24:47.948+0100|Info: JTS5014: Recoverable JTS instance, serverId = [100]
2016-10-02T15:24:47.965+0100|Warning: Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=http-listener-1, realClassName=org.glassfish.grizzly.http2.Http2AddOn
2016-10-02T15:24:48.037+0100|Info: Grizzly Framework 2.3.23 started in: 54ms - bound to [/0.0.0.0:8080]
2016-10-02T15:24:48.051+0100|Warning: Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=http-listener-2, realClassName=org.glassfish.grizzly.http2.Http2AddOn
2016-10-02T15:24:48.055+0100|Info: Grizzly Framework 2.3.23 started in: 1ms - bound to [/0.0.0.0:8181]
2016-10-02T15:24:48.057+0100|Warning: Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=admin-listener, realClassName=org.glassfish.grizzly.http2.Http2AddOn
2016-10-02T15:24:48.062+0100|Info: Grizzly Framework 2.3.23 started in: 2ms - bound to [/0.0.0.0:4848]
2016-10-02T15:24:48.093+0100|Info: Grizzly Framework 2.3.23 started in: 1ms - bound to [/0.0.0.0:3700]
2016-10-02T15:24:48.316+0100|Info: visiting unvisited references
2016-10-02T15:24:48.655+0100|Info: Java security manager is disabled.
2016-10-02T15:24:48.656+0100|Info: Entering Security Startup Service.
2016-10-02T15:24:48.658+0100|Info: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.
2016-10-02T15:24:48.677+0100|Info: Security Service(s) started successfully.
2016-10-02T15:24:48.829+0100|Info: Created HTTP listener http-listener-1 on host/port 0.0.0.0:8080
2016-10-02T15:24:48.833+0100|Info: Created HTTP listener http-listener-2 on host/port 0.0.0.0:8181
2016-10-02T15:24:48.835+0100|Info: Created HTTP listener admin-listener on host/port 0.0.0.0:4848
2016-10-02T15:24:48.849+0100|Info: Created virtual server server
2016-10-02T15:24:48.851+0100|Info: Created virtual server __asadmin
2016-10-02T15:24:48.995+0100|Info: Setting JAAS app name glassfish-web
2016-10-02T15:24:48.996+0100|Info: Virtual server server loaded default web module
2016-10-02T15:24:49.419+0100|Info: visiting unvisited references
2016-10-02T15:24:49.447+0100|Info: visiting unvisited references
2016-10-02T15:24:49.448+0100|Info: visiting unvisited references
2016-10-02T15:24:49.449+0100|Info: visiting unvisited references
2016-10-02T15:24:49.450+0100|Info: visiting unvisited references
2016-10-02T15:24:49.451+0100|Info: visiting unvisited references
2016-10-02T15:24:49.451+0100|Info: visiting unvisited references
2016-10-02T15:24:49.452+0100|Info: visiting unvisited references
2016-10-02T15:24:49.453+0100|Info: visiting unvisited references
2016-10-02T15:24:49.453+0100|Info: visiting unvisited references
2016-10-02T15:24:49.454+0100|Info: visiting unvisited references
2016-10-02T15:24:49.471+0100|Info: visiting unvisited references
2016-10-02T15:24:49.472+0100|Info: visiting unvisited references
2016-10-02T15:24:49.473+0100|Info: visiting unvisited references
2016-10-02T15:24:49.474+0100|Info: visiting unvisited references
2016-10-02T15:24:49.475+0100|Info: visiting unvisited references
2016-10-02T15:24:49.476+0100|Info: visiting unvisited references
2016-10-02T15:24:49.477+0100|Info: visiting unvisited references
2016-10-02T15:24:49.478+0100|Info: visiting unvisited references
2016-10-02T15:24:49.479+0100|Info: visiting unvisited references
2016-10-02T15:24:49.571+0100|Info: WELD-000900: 2.2.13 (Final)
2016-10-02T15:24:50.041+0100|Info: HV000001: Hibernate Validator 5.1.2.Final
2016-10-02T15:24:50.250+0100|WARN: WELD-001700: Interceptor annotation class javax.ejb.PostActivate not found, interception based on it is not enabled
2016-10-02T15:24:50.250+0100|WARN: WELD-001700: Interceptor annotation class javax.ejb.PrePassivate not found, interception based on it is not enabled
2016-10-02T15:24:50.407+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.413+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.415+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.427+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.428+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.429+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.430+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.433+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.436+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.437+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.438+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.439+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.440+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.441+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.442+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.444+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.444+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.445+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.445+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.447+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.448+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.448+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.450+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:50.451+0100|WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
2016-10-02T15:24:51.764+0100|Info: Loading application [pododdle] at [/pododdle]
2016-10-02T15:24:51.766+0100|Info: Loading application pododdle done in 3,949 ms
2016-10-02T15:24:51.766+0100|Info: GlassFish Server Open Source Edition 4.1.1 (1) startup time : Felix (1,264ms), startup services(4,275ms), total(5,539ms)
2016-10-02T15:24:51.821+0100|Info: Grizzly Framework 2.3.23 started in: 2ms - bound to [/0.0.0.0:7676]
2016-10-02T15:24:52.061+0100|Info: Registered com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishImpl@7bbbb6a8 as OSGi service registration: org.apache.felix.framework.ServiceRegistrationImpl@b18c4.
2016-10-02T15:24:52.082+0100|Info: JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://PododdlePC:8686/jndi/rmi://PododdlePC:8686/jmxrmi

Answer

It looks like this error was caused by the project not building properly. Upon inspection of the buildpath, it seemed two jar files were mysteriously missing! They were:

jersey-media-multipart-2.21.1.jar
mimepull-1.9.3.jar

I have no idea how the jar files were deleted from the /lib directory of the glassfish server, maybe I shouldn't have drunk that extra bottle of whiskey. Once they were added back in, everything suddenly worked hunky dory. A little baffled by the error - i would have thought it would give a compile error if the jar wasn't available. Anyhow, 5 days lost due to another annoying error.