java - Modified classes are not picked by Tomcat -


i have modified few classes (like hiveconnection.class, hivedatabasemetadata.class, hiveresultsetmetadata.class, hivestatement.class) in hive-jdbc-0.13.1-cdh5.3.3.jar, , created new jar contains modified classes , named 0_modified_hive_jdbc.jar.

those classes has overriden methods throwing method not supported exception. instead created class in same name, logged message, , not throwing exception.

placed hive-jdbc-0.13.1-cdh5.3.3.jar inside tomcat/lib (because org.apache.hive.jdbc.hivedriver referred driver name jndi in server.xml)

i have placed external jars this,

/home/nages/external_jar/0_override/0_modified_hive_jdbc.jar /home/nages/external_jar/hive/hive-jdbc-0.13.1-cdh5.3.3.jar /home/nages/external_jar/others/commons-lang-2.5.jar /home/nages/external_jar/others/spring-beans-2.5.3.jar /home/nages/external_jar/others/spring-context-2.5.3.jar /home/nages/external_jar/others/spring-core-2.5.3.jar /home/nages/external_jar/others/spring-jdbc-2.5.3.jar /home/nages/external_jar/others/spring-tx-2.5.3.jar etc.. 

referred these jars this

file /home/nages/tomcat/conf/catalina/localhost/myapp.xml

<context reloadable="true" path="/myapp"> <loader classname="org.apache.catalina.loader.virtualwebapploader" virtualclasspath="/home/nages/external_jar/0_overrider/*.jar;/home/nages/external_jar/hive/*.jar;/home/nages/external_jar/others/*.jar;/etc/hadoop/conf/;"/> </context> 

deployed application (myapp.war) in tomcat.

find.jsp presented in myapp.war.

/home/nages/tomcat/webapps/myapp/find.jsp

here piece of code presented in find.jsp

classloader loader = clazz.getclassloader();  if (loader == null){         throw new exception("class loader null."); } string filename = classname.replace('.','/')+".class"; url fileurl = loader.getresource(filename); out.println("<b>location : </b>" + fileurl); 

when request org.apache.hive.jdbc.hiveconnection in find.jsp, returns,

location : jar:file:/home/nages/external_jar/0_override/0_modified_hive_jdbc.jar!/org/apache/hive/jdbc/hiveconnection.class.

inside war there java class, has following code

import     org.springframework.jdbc.core.jdbctemplate; import     org.springframework.jdbc.support.rowset.sqlrowset;  jdbctemplate template = new jdbctemplate(getdatasource("hive"));         sqlrowset sqs = template.queryforrowset(sqlquery); 

i getting following exception

caused by: java.sql.sqlexception: method not supported         @ org.apache.hive.jdbc.hiveresultsetmetadata.issigned(hiveresultsetmetadata.java:141)         @ com.sun.rowset.cachedrowsetimpl.initmetadata(cachedrowsetimpl.java:726)         @ com.sun.rowset.cachedrowsetimpl.populate(cachedrowsetimpl.java:640)         @ org.springframework.jdbc.core.sqlrowsetresultsetextractor.createsqlrowset(sqlrowsetresultsetextractor.java:66)         @ org.springframework.jdbc.core.sqlrowsetresultsetextractor.extractdata(sqlrowsetresultsetextractor.java:49)         @ org.springframework.jdbc.core.jdbctemplate$1querystatementcallback.doinstatement(jdbctemplate.java:447)         @ org.springframework.jdbc.core.jdbctemplate.execute(jdbctemplate.java:395)         ... 48 more 

question why not picking org.apache.hive.jdbc.hiveresultsetmetadata.class overriden jar? find.jsp says classloader picks overriden jar, whereas while executing query picks somewhere else.

java : 1.7_45u tomcat : 7.0.35


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -