无法在docker中提供CLASSPATH?

时间:2016-08-23 12:13:49

标签: jsp tomcat docker

问题:

当我尝试通过在浏览器中运行Web应用程序(.html,.jsp文件)来将jsp容器连接到mysql容器时,我正面临 classNotFoundException

注意:它正在Eclipse中按预期执行

说明

我创建了一个" mysqlrep"使用dockerfile下面的图像,我在docker-compose中使用这个图像名称。

from ubuntu:14.04
run apt-get update
run apt-get install mysql-server -y
run apt-get install curl -y
RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
env set MYSQL_ROOT_PASSWORD= root
add my.sql /var/lib/mysql
run bash -c "/etc/init.d/mysql start && mysql -u root </var/lib/mysql/my.sql"

在上面的dockerfile中,我使用my.sql文件创建了数据库,如下所示

CREATE SCHEMA softwareag;
use softwareag;
create table users(
  username varchar(10) primary key,
  pwd varchar(10),
  fname varchar(10),
  lname varchar(10), 
  email varchar(30)
);
insert into users values('shashank','shas','shashank','g','sg@gmail.com');

CREATE USER "root"@"%" IDENTIFIED BY "root";
GRANT ALL PRIVILEGES ON *.* TO "root"@"%";
FLUSH PRIVILEGES;

下面是我的docker-compose.yml,我将链接mysql容器和jsp容器

mysql:
   image: mysqlrep1
   container_name: mysqlcompose1
   environment:
       - MYSQL_ROOT_PASSWORD= root
   ports:
       - "0.0.0.0:3306:3306"
   command: bash -c "/etc/init.d/mysql start && cd /var/lib/mysql && mysql -u root && sleep 50"

jsp:
   build: .
   container_name: jspcompose1
   links:
     - mysql
   cap_add:
     - SYS_PTRACE
   ports:
     - "8080:8080"
   command: bash -c "/etc/init.d/tomcat7 start &&  ping 127.0.0.1 -c 100"

我正在使用dockerfile在docker-compose中创建一个jsp容器。在dockerfile里面,使用ubuntu作为基本映像并在其上安装jdk,tomcat7并在jsp容器的/ var / lib / tomcat7 / webapps / ROOT目录中挂载.html,.jsp文件。

注意:我还尝试了很多语法来设置mysql .jar文件的类路径,将mysql .jar添加到dockerfile中的lib目录之后,但它没有解决我的问题。

运行docker-compose后,我同时在浏览器中通过http://system-ip-address:8080/index.html访问它。

注意:在索引.html中,用户在输入用户名&amp;密码,它通过连接到mysql数据库重定向到signIn.jsp页面以验证用户名/密码。

它可以工作但是当用户点击提交时,它会被重定向到signIn.jsp,它会抛出ClassNotFoundException。

这是我的signIn.jsp文件

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Sign In</title>
  </head>
<body>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page isErrorPage="true" %>

<%
 try{
  String userid=request.getParameter("usr"); 
  session.setAttribute("username",userid); 
  String pwd=request.getParameter("pwd");
   Class.forName("com.mysql.jdbc.Driver"); 
   java.sql.Connection con =  DriverManager.getConnection("jdbc:mysql://mysql:3306/softwareag","root","root"); 
   Statement st= con.createStatement(); 
   ResultSet rs=st.executeQuery("select * from users where username='"+userid+"'");
   if(rs.next()) 
   { 
     if(rs.getString(2).equals(pwd)) 
     { 
     response.sendRedirect("http://www.softwareag.com/in/");
     }
   }else
   {
        response.sendRedirect("http://localhost:8080/index.html");
   }
}
catch(Exception e)
{
      out.print("Exception:"+e);
}
 %>
 </body>
 </html>

您能建议解决方案使其有效吗?

如何以及在何处为mysql-connector-java-5.1.5-bin.jar文件提供类路径?

0 个答案:

没有答案