@maorongrong
2015-05-15T09:58:31.000000Z
字数 25702
阅读 712
docker TPC_W Linux 原创
提示:以下文章属本人毕业设计原创,转载请注明出处
参考博文主-centos
参考博文辅-ubuntu
解压缩后就是一个文件夹tpcw1.0
#(/root)wget http://pharm.ece.wisc.edu/tpcw/tpcw.tar.gz
尝试:编译安装jdk
#(/usr/local)mkdir java#(java)wget http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64-rpm.bin#chmod +x jdk-7-linux-x64-rpm.bin#./jdk-7-linux-x64-rpm.bin报错如下:./jdk-6u22-linux-x64-rpm.bin: line 1: html: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 2: head: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 3: title: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 4: META: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 5: link: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 6: link: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 7: $'\r': command not found./jdk-6u22-linux-x64-rpm.bin: line 8: body: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 9: div: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 10: table: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 11: tr: No such file or directory./jdk-6u22-linux-x64-rpm.bin: line 12: syntax error near unexpected token `<'./jdk-6u22-linux-x64-rpm.bin: line 12: ` <td rowspan="2" valign="middle" nowrap><a href="http://www.oracle.com"><img src="/errors/us/assets/oralogo-small.gif" width="154" height="19" hspa'e="10" vspace="25" border="0" ></a></td>
安装方法:
使用windows在ORACLE官网直接下载jdk-8u40-linux-x64.rpm(rpm安装包)和jdk-8u40-linux-x64.tar.gz(编译安装包),如果省去编译安装的麻烦,可以直接rpm安装:
将jdk-8u40-linux-x64.rpm传至/usr/local/#(/usr/local)rpm -ivh jdk-8u40-linux-x64.rpm安装完成后,默认安装路径为 /usr/java/,因此$JAVA_HOME=/usr/java/jdk1.8.0_40
windows机在[apache官网下载](http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.0.20/bin/apache-tomcat-8.0.20.tar.gz) apache-tomcat-8.0.20.tar.gz
将apache-tomcat-8.0.20.tar.gz传至/usr/local/
#(/usr/local)tar -xvf apache-tomcat-8.0.20.tar.gz (local下多一个apache-tomcat-8.0.20目录)#(/usr/local)ln -s /usr/local/apache-tomcat-8.0.20/ /usr/local/tomcat安装路径:/usr/local/apache-tomcat-8.0.20
在centos6中使用此方法:
#yum install mysql-server
而在centos7中报错如下:
#yum install mysql-serverLoaded plugins: fastestmirror, product-id, subscription-managerThis system is not registered with Subscription Management. You can use subscription-manager to register.Loading mirror speeds from cached hostfileNo package mysql-server available.Error: Nothing to do#yum search mysqlLoaded plugins: fastestmirror, product-id, subscription-managerThis system is not registered with Subscription Management. You can use subscription-manager to register.Loading mirror speeds from cached hostfile====================================== N/S matched: mysql ======================================MySQL-python.x86_64 : An interface to MySQLakonadi-mysql.x86_64 : Akonadi MySQL backend supportapr-util-mysql.x86_64 : APR utility library MySQL DBD driverdovecot-mysql.x86_64 : MySQL back end for dovecotfreeradius-mysql.x86_64 : MySQL support for freeradiuslibdbi-dbd-mysql.x86_64 : MySQL plugin for libdbimysql-connector-java.noarch : Official JDBC driver for MySQLmysql-connector-odbc.x86_64 : ODBC driver for MySQLperl-DBD-MySQL.x86_64 : A MySQL interface for Perlphp-mysql.x86_64 : A module for PHP applications that use MySQL databasesphp-mysqlnd.x86_64 : A module for PHP applications that use MySQL databasesqt-mysql.i686 : MySQL driver for Qt's SQL classesqt-mysql.x86_64 : MySQL driver for Qt's SQL classesqt3-MySQL.i686 : MySQL drivers for Qt 3's SQL classesqt3-MySQL.x86_64 : MySQL drivers for Qt 3's SQL classesredland-mysql.x86_64 : MySQL storage support for Redlandrsyslog-mysql.x86_64 : MySQL support for rsyslogmariadb.x86_64 : A community developed branch of MySQLmariadb-devel.i686 : Files for development of MariaDB/MySQL applicationsmariadb-devel.x86_64 : Files for development of MariaDB/MySQL applicationsmariadb-libs.i686 : The shared libraries required for MariaDB/MySQL clientsmariadb-libs.x86_64 : The shared libraries required for MariaDB/MySQL clientsName and summary matches only, use "search all" for everything.
centos7上mariadb与原有mysql区别与联系:
从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!
使用系统自带的repos安装很简单:
yum install mariadb mariadb-server
systemctl start mariadb ==> 启动mariadb
systemctl enable mariadb ==> 开机自启动
mysql_secure_installation ==> 设置 root密码等相关
mysql -uroot -p123456 ==> 测试登录!
mysql官网 下载所需安装包
尝试一:手动安装mysql方法 (你需要到mysql官方下载rpm包或者源码包编译安装)
可参考此博文进行
找到mysql5.6的centos的repo源,终于解决mysql的安装问题:#(/usr/local)wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm(下载mysql的repo源)#(/usr/local)rpm -ivh mysql-community-release-el7-5.noarch.rpm (安装这个包后,会获得两个mysql的yum repo源)结果如下:Preparing... ################################# [100%]Updating / installing...1:mysql-community-release-el7-5 ################################# [100%][amy@localhost local]$ cd /etc/yum.repos.d[amy@localhost yum.repos.d]$ lltotal 12-rw-r--r--. 1 root root 615 Mar 27 07:01 CentOS7-Base-163.repo-rw-r--r-- 1 root root 1209 Jan 29 2014 mysql-community.repo-rw-r--r-- 1 root root 1060 Jan 29 2014 mysql-community-source.repo# yum install mysql-community-serverLoaded plugins: fastestmirror, product-id, subscription-managerThis system is not registered with Subscription Management. You can use subscription-manager to register.base | 3.6 kB 00:00:00extras | 3.4 kB 00:00:00mysql-connectors-community | 2.5 kB 00:00:00mysql-tools-community | 2.5 kB 00:00:00mysql56-community | 2.5 kB 00:00:00...................Installed:mysql-community-libs.x86_64 0:5.6.23-3.el7 mysql-community-server.x86_64 0:5.6.23-3.el7Dependency Installed:mysql-community-client.x86_64 0:5.6.23-3.el7 mysql-community-common.x86_64 0:5.6.23-3.el7Replaced:mariadb-libs.x86_64 1:5.5.41-2.el7_0Complete!
(centos6、7中都要执行的步骤)成功安装之后重启mysql服务# service mysqld restart查看mysql配置文件/etc/my.cnf[amy@localhost etc]$ cat my.cnf## For advice on how to change settings please see..........datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Recommended in standard MySQL setupsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid查找mysql的安装路径#[root@docker188 usr]# find /usr -name mysql/usr/bin/mysql/usr/lib64/mysql/usr/share/mysql
初次安装完Mysql后,默认没有密码,需要设置密码:
(法一)
#mysql_secure_installation
MySQL安全配置向导mysql_secure_installation详解
(法二)
初次安装mysql后root账户是没有密码的,置密码的方法 : mysql -u root
根据mysql的命令行来更改:mysql> use mysql;mysql> update user set password=PASSWORD("GIVE-NEW-ROOT-PASSWORD") where User='root';mysql> flush privileges;mysql> quit成功登陆:[root@docker188 usr]# mysql -uroot -proot
mysql-connector-java-5.1.26-bin.jar#(/usr/local/apache-tomcat-8.0.20/webapps/servlet/WEB-INF/lib)rz(从桌面传jar包)
根据自己安装软件的路径在/etc/profile文件末尾添加:# vi /etc/profileexport JAVA_HOME=/usr/java/jdk1.8.0_40export CATALINA_HOME=/usr/local/apache-tomcat-8.0.20export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar:$CATALINA_HOME/webapps/servlet/WEB-INF/lib/mysql-connector-java-5.1.26-bin.jar:$CLASSPATH保存后使当前配置生效:#source /etc/profile (若提示命令找不到,则使用下面一行的命令)#. /etc/profile (注意.和/etc/profile之间有空格)然后再使用命令查看是否安装成功,命令如下:[amy@localhost etc]$ java -versionjava version "1.8.0_40"Java(TM) SE Runtime Environment (build 1.8.0_40-b26)Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode) 说明安装成功了
所有要修改的文件: tpcw1.0\populate\populate_images
tpcw1.0\populate\TPCW_Populate.java
tpcw1.0\servlets\TPCW_Database.java
tpcw1.0\servlets\TPCW_Util.java
tpcw1.0\rbe\RBE.java
tpcw1.0/rbe/EB.java
tpcw1.0/rbe/util/Debug.java
tpcw1.0/rbe/util/CharSetStrPattern.java
tpcw1.0/rbe/util/Histogram.java
${CATALINA_HOME}/webapps/servlet/WEB-INF/web.xml
主要修改
1、改变mysql连接数
2、改变sql语句
3、Mysql与jar文件版本一致
4、private static final boolean use_connection_pool = true;
5、public static final int maxConn = 500;
6、CURRENT_TIMESTAMP
7、CURRENT_DATE
8、INTERVAL 2 HOUR
[amy@localhost populate]$ pwd/home/amy/tpcw1.0/populate[amy@localhost populate]$ cat populate_images文件一:tpcw1.0\populate\populate_images① #!/usr/local/bin/perl ------> #!/usr/bin/perl② $DEST_DIR="/local_home/cain/Images";------>$DEST_DIR="/usr/local/apache-tomcat-6.0.26/webapps/tpcw/Images";文件二: tpcw1.0\populate\TPCW_Populate.java③ private static final String driverName = "com.mysql.jdbc.Driver"; private static final String dbName = "jdbc:mysql://localhost:3306/tpcw2";将代码中所有数据库插入语句中涉及的表名均改为小写,以解决填充数据库时因该表不存在而报错。④ PreparedStatement statement = con.prepareStatement("INSERT INTO address(ADDR_ID,ADDR_STREET1,ADDR_STREET2,ADDR_CITY,ADDR_STATE,ADDR_ZIP,ADDR_CO_ID) VALUES (?, ?, ?, ?, ?, ?, ?)");⑤ 更改数据库连接涉及的用户、密码信息:try {Class.forName(driverName);con=DriverManager.getConnection(dbName,"root","password");//(dbName);con.setAutoCommit(false);}文件三: tpcw1.0\servlets\TPCW_Database.java⑥ static String driverName = "com.mysql.jdbc.Driver";⑦ static String jdbcPath = "jdbc:mysql://localhost:3306/tpcw2";⑧ private static final boolean use_connection_pool = false;⑨ try {Class.forName(driverName).newInstance();Connection con;while(true){try{con = DriverManager.getConnection(jdbcPath, "root", "password");break;}}⑩ 将代码中的所有db2语句改成MySql语句。所有语句中FETCH FIRST 5 ROWS ONLY更改为limit 5更改错误表名及数据库操作11 PreparedStatement updateLogin = con.prepareStatement("UPDATE customer SET c_login = CURRENT_TIMESTAMP, c_expiration = (CURRENT_TIMESTAMP + INTERVAL 2 HOUR) WHERE c_id = ?");/*("UPDATE customer SET c_login = CURRENT TIMESTAMP, c_expiration = CURRENT TIMESTAMP + 2 HOURS WHERE c_id = ?");*/12 PreparedStatement insert_cart = con.prepareStatement("INSERT into shopping_cart (sc_id, sc_time) VALUES ((select temp.cc from ( SELECT COUNT(*) cc FROM shopping_cart) temp),CURRENT_TIMESTAMP)");/* ("INSERT into shopping_cart (sc_id, sc_time) " +"VALUES ((SELECT COUNT(*) FROM shopping_cart)," +"CURRENT TIMESTAMP)");*/13 PreparedStatement statement = con.prepareStatement("INSERT into cc_xacts (cx_o_id, cx_type, cx_num, cx_name, cx_expire, cx_xact_amt, cx_xact_date, cx_co_id) " +"VALUES (?, ?, ?, ?, ?, ?, CURRENT_DATE, (SELECT co_id FROM address, country WHERE addr_id = ? AND addr_co_id = co_id))");/* ("INSERT into cc_xacts (cx_o_id, cx_type, cx_num, cx_name, cx_expire, cx_xact_amt, cx_xact_date, cx_co_id) " +"VALUES (?, ?, ?, ?, ?, ?, CURRENT DATE, (SELECT co_id FROM address, country WHERE addr_id = ? AND addr_co_id = co_id))");*/14 PreparedStatement insert_row = con.prepareStatement("INSERT into orders (o_id, o_c_id, o_date, o_sub_total, " +"o_tax, o_total, o_ship_type, o_ship_date, " +"o_bill_addr_id, o_ship_addr_id, o_status) " +"VALUES (?, ?, CURRENT_DATE, ?, 8.25, ?, ?, CURRENT_DATE + INTERVAL ? DAY, ?, ?, 'Pending')");/* ("INSERT into orders (o_id, o_c_id, o_date, o_sub_total, " +"o_tax, o_total, o_ship_type, o_ship_date, " +"o_bill_addr_id, o_ship_addr_id, o_status) " +"VALUES (?, ?, CURRENT DATE, ?, 8.25, ?, ?, CURRENT DATE + ? DAYS, ?, ?, 'Pending')");*/文件四: tpcw1.0\servlets\TPCW_Util.java15 public static final String SESSION_ID="jsessionid=";文件五: tpcw1.0\rbe\RBE.java16 public static String www1 = "http://localhost:8080/";new StrStrPattern(";jsessionid=");public static final String field_sessionID = ";jsessionid=";17 修改下面4个文件中,public class Debug { public static void assert(boolean assertCond, String message)将函数名assert改成assert1,以解决直接编译出错问题。tpcw1.0/rbe/EB.javatpcw1.0/rbe/util/Debug.javatpcw1.0/rbe/util/CharSetStrPattern.javatpcw1.0/rbe/util/Histogram.java
修改${CATALINA_HOME}/webapps/servlet/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?><web-app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>TPC-W</display-name><description>TPC-W Java Implementation</description><servlet><servlet-name>TPCW_home_interaction</servlet-name><servlet-class>TPCW_home_interaction</servlet-class></servlet><servlet><servlet-name>TPCW_shopping_cart_interaction</servlet-name><servlet-class>TPCW_shopping_cart_interaction</servlet-class></servlet><servlet><servlet-name>TPCW_order_inquiry_servlet</servlet-name><servlet-class>TPCW_order_inquiry_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_order_display_servlet</servlet-name><servlet-class>TPCW_order_display_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_search_request_servlet</servlet-name><servlet-class>TPCW_search_request_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_execute_search</servlet-name><servlet-class>TPCW_execute_search</servlet-class></servlet><servlet><servlet-name>TPCW_new_products_servlet</servlet-name><servlet-class>TPCW_new_products_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_best_sellers_servlet</servlet-name><servlet-class>TPCW_best_sellers_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_product_detail_servlet</servlet-name><servlet-class>TPCW_product_detail_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_customer_registration_servlet</servlet-name><servlet-class>TPCW_customer_registration_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_buy_request_servlet</servlet-name><servlet-class>TPCW_buy_request_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_buy_confirm_servlet</servlet-name><servlet-class>TPCW_buy_confirm_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_admin_request_servlet</servlet-name><servlet-class>TPCW_admin_request_servlet</servlet-class></servlet><servlet><servlet-name>TPCW_admin_response_servlet</servlet-name><servlet-class>TPCW_admin_response_servlet</servlet-class></servlet><servlet-mapping><servlet-name>TPCW_home_interaction</servlet-name><url-pattern>/TPCW_home_interaction</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_shopping_cart_interaction</servlet-name><url-pattern>/TPCW_shopping_cart_interaction</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_order_inquiry_servlet</servlet-name><url-pattern>/TPCW_order_inquiry_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_order_display_servlet</servlet-name><url-pattern>/TPCW_order_display_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_search_request_servlet</servlet-name><url-pattern>/TPCW_search_request_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_execute_search</servlet-name><url-pattern>/TPCW_execute_search</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_new_products_servlet</servlet-name><url-pattern>/TPCW_new_products_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_best_sellers_servlet</servlet-name><url-pattern>/TPCW_best_sellers_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_product_detail_servlet</servlet-name><url-pattern>/TPCW_product_detail_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_customer_registration_servlet</servlet-name><url-pattern>/TPCW_customer_registration_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_buy_request_servlet</servlet-name><url-pattern>/TPCW_buy_request_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_buy_confirm_servlet</servlet-name><url-pattern>/TPCW_buy_confirm_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_admin_request_servlet</servlet-name><url-pattern>/TPCW_admin_request_servlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TPCW_admin_response_servlet</servlet-name><url-pattern>/TPCW_admin_response_servlet</url-pattern></servlet-mapping></web-app>
[amy@docker188 ~]$ mysql -uroot -prootWarning: Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.......Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> CREATE DATABASE tpcw2;Query OK, 1 row affected (0.00 sec)mysql> exit
[amy@docker188 ~]$ sudo mkdir -p ${CATALINA_HOME}/webapps/tpcw/Images[amy@docker188 ~]$ sudo mkdir -p ${CATALINA_HOME}/webapps/servlet/WEB-INF/classes
错误一及解决方法:
[amy@docker188 populate]$ pwd/home/amy/tpcw1.0/populate[amy@docker188 populate]$ sudo systemctl start mysqld.service[amy@docker188 populate]$ javac TPCW_Populate.javaTPCW_Populate.java:266: error: unmappable character for encoding UTF8//myql??????linux?????????д?Сд???, ???com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tpcw2.ADDRESS'^[amy@docker188 populate]$ javac -encoding gbk TPCW_Populate.java[amy@docker188 populate]$ lltotal 72-rwxr-xr-x 1 amy amy 141 Feb 25 2000 Makefile-rwxr-xr-x 1 amy amy 1659 Mar 27 23:06 populate_images-rw-rw-r-- 1 amy amy 26044 Mar 29 20:33 TPCW_Populate.class (说明编译成功)-rwxr-xr-x 1 amy amy 35621 Mar 29 08:57 TPCW_Populate.java
错误二及解决方法:
运行文件TPCW_Populate.class报错如下:[amy@docker188 populate]$ java TPCW_PopulateBeginning TPCW Database population.java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078).........解决方法:在188服务器搭建mysql时给了root用户密码root,代码中没有给密码.代码更改如下:try {Class.forName(driverName);con = DriverManager.getConnection(dbName, "root", "root");//(dbName);此处添加密码rootcon.setAutoCommit(false);//解决java.sql.SQLException: Can't call commit when autocommit=true}删除TPCW_Populate.class文件,重新编译运行。
错误三及解决方法:
[amy@docker188 populate]$ javac -encoding gbk TPCW_Populate.java[amy@docker188 populate]$ java TPCW_PopulateBeginning TPCW Database population.Already dropped table ADDRESSAlready dropped table AUTHORAlready dropped table CC_XACTSAlready dropped table COUNTRYAlready dropped table CUSTOMERAlready dropped table ITEMAlready dropped table ORDER_LINEAlready dropped table ORDERSAlready dropped table SHOPPING_CARTAlready dropped table SHOPPING_CART_LINEDone deleting tables!Created table ADDRESSCreated table AUTHORCreated table CC_XACTSCreated table COUNTRYCreated table CUSTOMERCreated table ITEMCreated table ORDER_LINECreated table ORDERSCreated table SHOPPING_CARTCreated table SHOPPING_CART_LINEDone creating tables!Populating ADDRESS Table with 288000 addressesComplete (in 10,000's): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28Populating AUTHOR Table with 2500 authorsUnable to populate AUTHOR tablecom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tpcw2.AUTHOR' doesn't existat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:422)at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)at com.mysql.jdbc.Util.getInstance(Util.java:386)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)at TPCW_Populate.populateAuthorTable(TPCW_Populate.java:333)at TPCW_Populate.main(TPCW_Populate.java:93)出现报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tpcw2.AUTHOR' doesn't exist代码更改如下:try {PreparedStatement statement = con.prepareStatement("INSERT INTO author(A_ID,A_FNAME,A_LNAME,A_MNAME,A_DOB,A_BIO) VALUES (?, ?, ?, ?, ?, ?)");依次同上,报错:Unable to populate COUNTRY tablecom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tpcw2.COUNTRY' doesn't exist
成功执行的样子:
[amy@docker188 populate]$ javac -encoding gbk TPCW_Populate.java[amy@docker188 populate]$ java TPCW_PopulateBeginning TPCW Database population.Already dropped table ADDRESSAlready dropped table AUTHORAlready dropped table CC_XACTSAlready dropped table COUNTRYAlready dropped table CUSTOMERAlready dropped table ITEMAlready dropped table ORDER_LINEAlready dropped table ORDERSAlready dropped table SHOPPING_CARTAlready dropped table SHOPPING_CART_LINEDone deleting tables!Created table ADDRESSCreated table AUTHORCreated table CC_XACTSCreated table COUNTRYCreated table CUSTOMERCreated table ITEMCreated table ORDER_LINECreated table ORDERSCreated table SHOPPING_CARTCreated table SHOPPING_CART_LINEDone creating tables!Populating ADDRESS Table with 288000 addressesComplete (in 10,000's): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28Populating AUTHOR Table with 2500 authorsPopulating COUNTRY with 92 countriesPopulating CUSTOMER Table with 144000 customersComplete (in 10,000's): 1 2 3 4 5 6 7 8 9 10 11 12 13 14Populating ITEM table with 10000 itemsPopulating ORDERS, ORDER_LINES, CC_XACTS with 129600 ordersComplete (in 10,000's): 1 2 3 4 5 6 7 8 9 10 11 12Adding IndexesDone继续配置[amy@docker188 populate]$ sudo cp TPCW_Populate.class ${CATALINA_HOME}/webapps/servlet/WEB-INF/classes[sudo] password for amy:[amy@docker188 populate]$ cd ${CATALINA_HOME}/webapps/servlet/WEB-INF/[amy@docker188 WEB-INF]$ lltotal 0drwxr-xr-x 2 root root 32 Mar 29 22:41 classesdrwxr-xr-x 2 root root 48 Mar 27 22:18 lib
[amy@docker188 ImgGen]$ cd ImgFiles[amy@docker188 ImgFiles]$ pwd/home/amy/tpcw1.0/ImgGen/ImgFiles[amy@docker188 ImgFiles]$ make执行后没有error,只有warning
请问make 和 make install 时出现什么提示证明编译安装成功呢?
(1)
观察你能看到的最后几行
出现error就没成功
出现waring可以无视
(2)
如果编译出错的话,make就会停止,然后打印出一堆Error,如果成功编译完了,是没有E rror、错误等字样出现的。判断是否成功只要看make打印信息的末尾是不是有Error。如果想见证一下错误,就在源代码里故意弄几个错误,make最后就会出错,然后可以观察一下错误信息。
[amy@docker188 ImgFiles]$ pwd/home/amy/tpcw1.0/ImgGen/ImgFiles[amy@docker188 ImgFiles]$ cd ..[amy@docker188 ImgGen]$ pwd/home/amy/tpcw1.0/ImgGen[amy@docker188 ImgGen]$ cd ../populate[amy@docker188 populate]$ pwd/home/amy/tpcw1.0/populate[amy@docker188 populate]$ sudo perl populate_images 执行正常[amy@docker188 populate]$ sudo cp ../images/* ${CATALINA_HOME}/webapps/tpcw/Images
[amy@docker188 servlets]$ javac *.javaNote: Some input files use or override a deprecated API.Note: Recompile with -Xlint:deprecation for details.Note: Some input files use unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details.(当前目录下每个都生成字节码,没报错就行。)#cp *.class ${CATALINA_HOME}/webapps/servlet/WEB-INF/classes (总是忘记这一步)#vi ${CATALINA_HOME}/webapps/servlet/WEB-INF/web.xml
[amy@docker188 util]$ pwd/home/amy/tpcw1.0/rbe/util[amy@docker188 util]$ javac *.java(执行完什么反应也没有,说明没错)[amy@docker188 util]$ cd ../args[amy@docker188 args]$ mkdir -p rbe/util[amy@docker188 args]$ cp ../util/*.class rbe/util/[amy@docker188 args]$ pwd/home/amy/tpcw1.0/rbe/args[amy@docker188 args]$ cd rbe/util/[amy@docker188 util]$ lltotal 44-rw-r--r-- 1 amy amy 749 Mar 30 09:25 AbCharStrPattern.class-rw-r--r-- 1 amy amy 421 Mar 30 09:25 CharRangeStrPattern.class-rw-r--r-- 1 amy amy 1975 Mar 30 09:25 CharSetStrPattern.class-rw-r--r-- 1 amy amy 364 Mar 30 09:25 CharStrPattern.class-rw-r--r-- 1 amy amy 629 Mar 30 09:25 Debug.class-rw-r--r-- 1 amy amy 508 Mar 30 09:25 DebugError.class-rw-r--r-- 1 amy amy 2970 Mar 30 09:25 Histogram.class-rw-r--r-- 1 amy amy 2833 Mar 30 09:25 Pad.class-rw-r--r-- 1 amy amy 1007 Mar 30 09:25 StringPattern.class-rw-r--r-- 1 amy amy 1063 Mar 30 09:25 StrStrPattern.class-rw-rw-r-- 1 amy amy 3004 Mar 30 09:25 TestPattern.class[amy@docker188 args]$ mkdir rbe/args[amy@docker188 args]$ javac *.javaNote: ArgDB.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details.[amy@docker188 args]$ cp *.class rbe/args/[amy@docker188 args]$ mv rbe ../[amy@docker188 args]$ pwd/home/amy/tpcw1.0/rbe/args[amy@docker188 args]$ cd ..[amy@docker188 rbe]$[amy@docker188 rbe]$ javac *.javaEB.java:317: warning: unreachable catch clausecatch (IOException ioe) {^thrown type MalformedURLException has already been caughtNote: RBE.java uses or overrides a deprecated API.Note: Recompile with -Xlint:deprecation for details.Note: Some input files use unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details.1 warning
启动tomcat[amy@docker188 bin]$ pwd/usr/local/apache-tomcat-8.0.20/bin[amy@docker188 bin]$ sudo ./startup.sh[sudo] password for amy:Using CATALINA_BASE: /usr/local/apache-tomcat-8.0.20Using CATALINA_HOME: /usr/local/apache-tomcat-8.0.20Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.0.20/tempUsing JRE_HOME: /Using CLASSPATH: /usr/local/apache-tomcat-8.0.20/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.20/bin/tomcat-juli.jarTomcat started.
访问http://localhost:8080/servlet/TPCW_home_interaction页面测试是否安装成功
(localhost换成部署你环境的主机ip;如果是容器,localhost为docker守护进程所在宿主机的ip,8080端口换成你主机映射docker容器的端口(如主机49154->8080,则端口写49154))
浏览器无结果:参考方法 IPTABLES问题1 IPTABLES问题2
可以vi 打开 /etc/sysconfig/iptables 的文件中追加-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT#iptables -F 这个命令可以清除CentOS中iptables自带防火墙默认规则
[amy@docker188 ~]$ cd tpcw1.0/[amy@docker188 ~]$java rbe.RBE -EB rbe.EBTPCW1Factory 30 -OUT test.m -RU 100 -MI 1000 -RD 100 -www http://127.0.0.1/ -CUST 10000 -ITEM 10000
模拟试试:(可以进数据库查看当前访问进程)
mysql> show processlist;
在mysql数据库中加入允许远程访问的test用户,用户密码也是test:
mysqk>GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY 'test' WITH GRANT OPTION;mysql>grant all privileges on *.* to 'test'@'%' identified by 'test';mysql>flush privileges;//刷新系统权限表
下面这种方法会报错:
mysql>insert into mysql.user(Host,User,Password) values("%","test",password("test"));会报错!!!(Mysql添加用户错误:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解决方法)
查看网络可能用到的命令
netstat -apn | grep 8080
iptables -l
iptables -h
iptables -L
sudo systemctl stop iptables.service
基础镜像尽量选择centos6(centos7在安装mysql的时候你会很痛苦,service命令等都精简的没了)
其他部分同上面安装方法一样,只是可能需要 #yum install tar wget等
若yum源链接总是提示超时,可以在/etc/yum.conf末尾添加timeout=1200
在centos6起的docker容器中,默认没有make命令,需要:
#yum -y install gcc automake autoconf libtool make
ImgGen/ 包含由TPC提供的随机图像生成程序
images/ 包含对TPC-W网页的标准图像,如导航,按钮,标志,等
matlab/ 该目录包含一组MATLAB脚本,可用于可视化一个TPC-W运行时的统计数据。这些脚本利用由RBE创建的一个matlab文件
populate/ 该目录包含可用于填充DB2数据库的Java程序,名为TPCW_Populate.java。这个程序可以忍受所有TPC指定数据库缩放规则。在填充数据库之前,必须先创建数据库(其中必须有对JDBC接口的支持)。在运行TPCW_Populate程序之前,你需要设置NUM_EBS和NUM_ITEMS变量,来设置相应的DB大小你也需要改变DRIVERNAME和DBNAME变量,以满足您的特定数据库的安装。
rbe/ 该目录包含所有实现远程浏览器的源代码。为了构建RBE,运行“javac RBE / *”,从TPCW安装目录.运行rbe的一个示例命令行被设置在文件“runtpcw”。更多关于RBE的信息可以在RBE目录里面的README文件中找到根据您的Web服务器是如何编码的会话ID(使用URL重写),你可能需要改变文件RBE.java里的“yourSessionID”变量在这个文件里的makefile可用于构建这些类目录。在运行makefile文件之前,你需要编辑它,为你的Web服务器指定TPCW_HOME,和SERVLET_HOME和CLASS_HOME变量到相应的目录。这种分配已经过测试,与Apache JServ的,Sun Java Web Server 2.0中,IBM的WebSphere标准版,和Jigsaw Web服务器。