问题:
当我尝试通过在浏览器中运行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文件提供类路径?