Andi Domi
Andi Domi

Reputation: 751

How to configure tomcat to work with mysql in OpenShift?

I just discovered OpenShift and i love it! And i would like to try it with a tomcat app that communicates with mysql.I was able to install tomcat through this tutorial and my tomcat server is up and running !I also installed mysql and phpmyadmin,but now i have to deploy my servlet in the tomcat server .My servlet communicates with mysql but i cant find where to insert the variables that Openshift give me !Does anyone have any idea? Thnx in advandce Andi :)

OPENSHIFT VARIABLES ARE:

Root User :andi
RootPassword: andi
Connection URL: mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/

MY SERVLET:

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public HelloWorldServlet() {
    super();
}

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
       String titulli =  request.getParameter("titulli");
      String ingredientet =  request.getParameter("ingredientet");
       String receta =  request.getParameter("receta");

       final String url = "jdbc:mysql://localhost/andi";
        final String user = "andi";
        final String password = "andi";
        try {

            // jdbc try
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = (Connection) DriverManager.getConnection(url, user,
                    password);
            // insert values into the first table
        PreparedStatement s = (PreparedStatement) con
                    .prepareStatement("INSERT INTO  recetat(titulli,ingredientet,receta) VALUES (?,?,?)");

        s.setString(1, titulli);
        s.setString(2, ingredientet);
        s.setString(3, receta);
        s.executeUpdate();




        }  catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        PrintWriter out = response.getWriter();
        out.println("Receta u ruajt me sukses ne server !");
        System.out.println(titulli+ingredientet+receta);
}
} 

like you can see i dont know where to insert the

Connection URL: mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/ 

variable...

Upvotes: 0

Views: 3513

Answers (2)

Clayton
Clayton

Reputation: 3316

Somewhat related - you can now install tomcat directly (without following the DIY steps) but running

rhc app create <name> jbossews-1.0

JBoss EWS is a maintained and supported version of Tomcat from Red Hat - all the same bits. Also, starting next week the rhc client tools will support

rhc app create <name> tomcat6

To make it even simpler.

Upvotes: 1

BalusC
BalusC

Reputation: 1108642

OpenShift puts the MySQL host and port as environment variables on exactly that name. In Java terms, they are available by

String host = System.getenv("OPENSHIFT_MYSQL_DB_HOST");
String port = System.getenv("OPENSHIFT_MYSQL_DB_PORT");

Then, compose the JDBC URL as follows

String url = String.format("jdbc:mysql://%s:%s/andi", host, port);

The normal approach, however, is to create a connection pooled datasource in context.xml and obtain that by JNDI instead.

Upvotes: 5

Related Questions