Im trying to deploy a java web app to heroku, I did all their steps from https://devcenter.heroku.com/articles/deploying-java-applications-with-the-heroku-maven-plugin, but when I try to open a page where I have data from db I am getting:
`javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
2021-06-09T19:50:10.133124+00:00 app[web.1]: at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:673)
2021-06-09T19:50:10.133124+00:00 app[web.1]: at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
2021-06-09T19:50:10.133125+00:00 app[web.1]: at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)
2021-06-09T19:50:10.133125+00:00 app[web.1]: at javax.naming.InitialContext.lookup(InitialContext.java:417)
2021-06-09T19:50:10.133126+00:00 app[web.1]: at listeners.JDBCContextListener.contextInitialized(JDBCContextListener.java:27)
2021-06-09T19:50:10.133127+00:00 app[web.1]: at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4685)
2021-06-09T19:50:10.133127+00:00 app[web.1]: at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5146)
2021-06-09T19:50:10.133127+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
2021-06-09T19:50:10.133128+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
2021-06-09T19:50:10.133128+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
2021-06-09T19:50:10.133128+00:00 app[web.1]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2021-06-09T19:50:10.133129+00:00 app[web.1]: at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
2021-06-09T19:50:10.133129+00:00 app[web.1]: at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
2021-06-09T19:50:10.133130+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
2021-06-09T19:50:10.133130+00:00 app[web.1]: at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
2021-06-09T19:50:10.133130+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
2021-06-09T19:50:10.133131+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
2021-06-09T19:50:10.133131+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
2021-06-09T19:50:10.133132+00:00 app[web.1]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2021-06-09T19:50:10.133132+00:00 app[web.1]: at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
2021-06-09T19:50:10.133132+00:00 app[web.1]: at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
2021-06-09T19:50:10.133133+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
2021-06-09T19:50:10.133133+00:00 app[web.1]: at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
2021-06-09T19:50:10.133134+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
2021-06-09T19:50:10.133134+00:00 app[web.1]: at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
2021-06-09T19:50:10.133135+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
2021-06-09T19:50:10.133135+00:00 app[web.1]: at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
2021-06-09T19:50:10.133135+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
2021-06-09T19:50:10.133136+00:00 app[web.1]: at org.apache.catalina.startup.Tomcat.start(Tomcat.java:459)
2021-06-09T19:50:10.133136+00:00 app[web.1]: at webapp.runner.launch.Main.main(Main.java:289)`
It works well on my local machine. Please advise me. There is my pom.xml :
`<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>GrowUp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>GrowUp</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-util -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-util</artifactId>
<version>8.5.23</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.23</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.ckeditor/ckeditor-java-core -->
<dependency>
<groupId>com.ckeditor</groupId>
<artifactId>ckeditor-java-core</artifactId>
<version>3.5.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>com.heroku.sdk</groupId>
<artifactId>heroku-maven-plugin</artifactId>
<version>3.0.3</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<artifactItems>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>7.0</version>
<type>jar</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
`
There is my context.xml
`<?xml version="1.0" encoding="UTF-8"?>
<Context path="/GrowUp">
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="30" maxTotal="100"
maxWaitMillis="10000"
name="jdbc/heroku_a6ba2d62a41cee6"
password="..."
type="javax.sql.DataSource"
url="jdbc:mysql://us-cdbr-east-04.cleardb.com/heroku_a6ba2d62a41cee6?reconnect=true"
username="..."/>
</Context>`
I am using a listener for sessions and suppose the problem is there:
`@Override
public void contextInitialized(ServletContextEvent sce) {
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/heroku_a6ba2d62a41cee6");`