ODOT-PTS / TNExT

a web-based software tool developed for the visualization, analysis, and reporting of regional and statewide transit networks in the state of Oregon
15 stars 4 forks source link

getVersion crash #43

Closed ed-g closed 7 years ago

ed-g commented 7 years ago

http://tna.trilliumtransit.com:8080/TNAtoolAPI-Webapp/modifiers/dbupdate/getVersion

HTTP Status 500 - Servlet execution threw an exception

type Exception report

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.ExceptionInInitializerError com.webapp.modifiers.DbUpdate.(DbUpdate.java:106) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) com.sun.jersey.server.spi.component.ResourceComponentConstructor._construct(ResourceComponentConstructor.java:193) com.sun.jersey.server.spi.component.ResourceComponentConstructor.construct(ResourceComponentConstructor.java:182) com.sun.jersey.server.impl.resource.PerRequestFactory$PerRequest._getInstance(PerRequestFactory.java:182) com.sun.jersey.server.impl.resource.PerRequestFactory$AbstractPerRequest.getInstance(PerRequestFactory.java:144) com.sun.jersey.server.impl.application.WebApplicationContext.getResource(WebApplicationContext.java:225) com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:69) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136) com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1347) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1279) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NullPointerException com.model.database.Databases.getDbInfo(Databases.java:69) com.model.database.Databases.(Databases.java:34) com.webapp.modifiers.DbUpdate.(DbUpdate.java:106) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) com.sun.jersey.server.spi.component.ResourceComponentConstructor._construct(ResourceComponentConstructor.java:193) com.sun.jersey.server.spi.component.ResourceComponentConstructor.construct(ResourceComponentConstructor.java:182) com.sun.jersey.server.impl.resource.PerRequestFactory$PerRequest._getInstance(PerRequestFactory.java:182) com.sun.jersey.server.impl.resource.PerRequestFactory$AbstractPerRequest.getInstance(PerRequestFactory.java:144) com.sun.jersey.server.impl.application.WebApplicationContext.getResource(WebApplicationContext.java:225) com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:69) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136) com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1347) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1279) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.69 logs. Apache Tomcat/7.0.69

ed-g commented 7 years ago

Fixed via #51

Now returns:

<PDBerror dbError="V4.16.07"/>

Is this actually an error, or just the way the software returns a version number?

ed-g commented 7 years ago

The OSU tool returns exactly the same xml, so this might not be an error.

http://tnasoftwaretool.engr.oregonstate.edu:8080/TNAtoolAPI-Webapp/modifiers/dbupdate/getVersion

<PDBerror dbError="V4.16.07"/>
ed-g commented 7 years ago

Yeah, from source, the API returns data via the PDBerror class.

(Note: ^M below is just CR from DOS format files, it's not a problem.)

In DbUpdate.java

// ...
import com.model.database.PDBerror;^M
// ...
    @GET^M
    @Path("/getDefaultDbIndex")^M
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML })^M
    public Object getDefaultDbIndex(){^M
        PDBerror b = new PDBerror();^M
        b.DBError = (Databases.dbsize-1)+"";^M
        return b;^M
    }^M
// ...