Openshift - 没有为jdbc:mysql找到合适的驱动程序

时间:2015-07-13 18:14:20

标签: java mysql servlets jdbc openshift

我是Java和Servlet编程的新手。我正在尝试托管一个在localhost中成功运行的简单应用程序。但当我把它托管给Openshift时,它会说No suitable driver found for jdbc:mysql://127.12.204.2:3306/shifar。 我想要做的就是将字符串保存到数据库中。 这是我的代码

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private static final String
     HOST = System.getenv("OPENSHIFT_MYSQL_DB_HOST"),
     PORT = System.getenv("OPENSHIFT_MYSQL_DB_PORT"),
     USERNAME = System.getenv("OPENSHIFT_MYSQL_DB_USERNAME"),
     PASSWORD = System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD"),
     DB_NAME = "shifar";

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String name = request.getParameter("userName");
        PrintWriter pw = response.getWriter();

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            pw.println("Error while loading driver: "+e.getMessage());
        }

        try {
            String url = "jdbc:mysql://" + HOST + ":" + PORT +
                    "/" + DB_NAME;

            Connection con = DriverManager.getConnection(url, USERNAME, PASSWORD);
            PreparedStatement prep = con.prepareStatement("INSERT INTO names (name) VALUE (?)");
            prep.setString(1, name);
            int rc = prep.executeUpdate();
            pw.println("Name saved !:"+name+" @ "+ rc);
        } catch (SQLException e) {
            pw.println("Error while connecting: "+e.getMessage());
        }


    }

}

我无法弄清楚错误:(。应用程序的部署是通过Git完成的.WAR

Live Preview - (在edittext中输入内容并提交)

1 个答案:

答案 0 :(得分:3)

您的servlet容器需要以其方式访问jar文件。例如,Tomcat可能想要Route::get('/', [ 'as' => 'index', 'uses' => 'DefaultController@getIndex' ]); Route::group(['domain' => 'my.domain.com'], function(){ Route::group(['middleware' => 'auth'], function() { Route::get('/', [ 'as' => 'account.home', 'uses' => 'AccountController@getIndex' ]); }); Route::group(['middleware' => 'guest'], function() { Route::get('/login', [ 'as' => 'auth.login', 'uses' => 'AuthController@getLogin' ]); }); }); 之类的东西 在应用程序下的web-inf文件夹中。您需要关注类路径和servlet容器的设置,无论它是什么。

如果您需要进一步的帮助,请在此处提出更多详细信息。