Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hibernate files loading from nonexistent file names #54

Closed
ed-g opened this issue Sep 12, 2017 · 7 comments
Closed

hibernate files loading from nonexistent file names #54

ed-g opened this issue Sep 12, 2017 · 7 comments

Comments

@ed-g
Copy link
Collaborator

ed-g commented Sep 12, 2017

Looks very similar to the problem we were seeing with dbInfo.csv.

SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.ExceptionInInitializerError
at com.webapp.api.Queries.getmenu(Queries.java:833)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ObjectOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:237)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:70)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:279)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:86)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1347)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1279)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.hibernate.HibernateException: could not find file: /var/lib/tomcat/webapps/ROOT/WEB-INF/classes/com/model/database/Databases.class../../src/main/resources/com/model/database/connections/transit/summer16.cfg.xml
at org.hibernate.cfg.Configuration.configure(Configuration.java:2189)
at com.model.database.onebusaway.gtfs.hibernate.ext.GtfsHibernateReaderExampleMain.createHibernateGtfsFactory(GtfsHibernateReaderExampleMain.java:302)
at com.model.database.onebusaway.gtfs.hibernate.ext.GtfsHibernateReaderExampleMain.(GtfsHibernateReaderExampleMain.java:70)
... 40 more
Caused by: java.io.FileNotFoundException: /var/lib/tomcat/webapps/ROOT/WEB-INF/classes/com/model/database/Databases.class../../src/main/resources/com/model/database/connections/transit/summer16.cfg.xml (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.(FileInputStream.java:138)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2186)
... 42 more

@ed-g ed-g self-assigned this Sep 12, 2017
@ed-g
Copy link
Collaborator Author

ed-g commented Sep 12, 2017

This code fragment looks promising for finding files under the tomcat extraction directory.

		ClassLoader classLoader = getClass().getClassLoader();
		File inputFile = new File(classLoader.getResource("admin/resources/dbInfo.csv").getFile());

@ed-g
Copy link
Collaborator Author

ed-g commented Sep 12, 2017

What's needed here is a way to abstract the location where tna loads its configuration files. In an ideal world that would be a read/write location such as /etc/tnatool or c:/tnatool

@ed-g
Copy link
Collaborator Author

ed-g commented Sep 12, 2017

The spatial xml file fragment is related to spatialConfigPaths and ConfigPaths (which are columns in dbInfo.csv)

From Databases.java:

	public static void updateDbInfo(boolean b) {
		dbsize = infoMap.get("databaseIndex").length;
		spatialConfigPaths = infoMap.get("spatialConfigPaths");
		ConfigPaths = infoMap.get("ConfigPaths");
		if(b){
			String connectionPath = path + "../../src/main/resources/";
			for (int k=0; k<ConfigPaths.length; k++){
				ConfigPaths[k] = connectionPath+ConfigPaths[k];
			}
		}
			    
		dbnames = infoMap.get("dbnames");
		connectionURLs = infoMap.get("connectionURL");
		usernames = infoMap.get("username");
		passwords = infoMap.get("password");		
	}

@ed-g
Copy link
Collaborator Author

ed-g commented Sep 12, 2017

$ ag ConfigPaths .
src/main/webapp/resources/admin/dbInf.csv
1:databaseIndex,dbnames,spatialConfigPaths,ConfigPaths,connectionURL,username,password,censusMappingSource,gtfsMappingSource1,gtfsMappingSource2

src/main/java/com/model/database/queries/util/Hutil.java
32:                sessionFactory[k] = new Configuration().configure(Databases.spatialConfigPaths[k]).buildSessionFactory();
51:                sessionFactory[k] = new Configuration().configure(Databases.spatialConfigPaths[k]).buildSessionFactory();

src/main/java/com/model/database/Databases.java
97:		spatialConfigPaths = infoMap.get("spatialConfigPaths");
98:		ConfigPaths = infoMap.get("ConfigPaths");
101:			for (int k=0; k<ConfigPaths.length; k++){
102:				ConfigPaths[k] = connectionPath+ConfigPaths[k];
128:	public static String[] spatialConfigPaths = infoMap
129:			.get("spatialConfigPaths");
130:	public static String[] ConfigPaths = infoMap.get("ConfigPaths");
133:		for (int k=0; k<ConfigPaths.length; k++){
134:			ConfigPaths[k] = connectionPath + ConfigPaths[k];

src/main/java/com/model/database/onebusaway/gtfs/hibernate/ext/GtfsHibernateReaderExampleMain.java
70:		  factory[k] = createHibernateGtfsFactory(Databases.ConfigPaths[k],k);
81:		  factory[k] = createHibernateGtfsFactory(Databases.ConfigPaths[k],k);

src/main/resources/admin/resources/dbinfo.csv
1:databaseIndex,dbnames,spatialConfigPaths,ConfigPaths,connectionURL,username,password,censusMappingSource,gtfsMappingSource1,gtfsMappingSource2

@ed-g
Copy link
Collaborator Author

ed-g commented Sep 12, 2017

From tomcat stderr logs.

HibernateGtfsFactory::createHibernateGtfsFactory, resource is: /var/lib/tomcat/webapps/ROOT/WEB-INF/classes/com/model/database/Databases.class../../src/main/resources/com/model/database/connections/transit/summer16.cfg.xml

131 [http-bio-8080-exec-21] INFO org.hibernate.cfg.Configuration - configuring from file: summer16.cfg.xml

@ed-g
Copy link
Collaborator Author

ed-g commented Sep 12, 2017

Fixed by ca053f5

@ed-g ed-g closed this as completed Sep 12, 2017
@ed-g
Copy link
Collaborator Author

ed-g commented Sep 12, 2017

@BenFields724 @srinivas13794

Note this means that xml config files for specific databases now live under:

/etc/tnatool/com/model/database/connections/{spatial,transit}

On tna.trilliumtransit.com.

The versions which were in /home/tnatool/src/TNAST_MAVEN/TNAtoolAPI-Webapp/src/main/resources/com/model/database/connections/ no longer have any effect.

I'm going to remove those shortly. Actually I will copy them to /etc/ and remove the ones under /home/tnatool/.

Likewise dbInfo.csv is now /etc/tnatool/admin/resources/dbInfo.csv and the version under /home/tnatool/ is no longer used.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant