Java入門 - sitemap.xml を scp でルートドキュメントに自動アップロード【import ch.ethz.ssh2】
Javaの動作環境
接続先のDB
※ローカルPCから外部のDBに接続するには、接続するDBが外部からの接続を許可していることが前提となります
前回、Javaでsitemap.xmlを作成しました。
●Java入門 - Javaでsitemap.xmlを自動で生成【while( rs.next() )】
http://accentplus.blog134.fc2.com/blog-entry-77.html
本節では、作成したsitemap.xmlを scp で指定時刻に自動アップロードする方法をご紹介します。
①Java - SCPでファイルをアップするコマンドをソースに追記
②Windows タスクスケジューラーで指定のバッチファイルを定期実行
前回作成した、write.javaにscpでのアップロードコマンドを追記します。
保存先 C:\Java
ファイル名 Sitemap.java
テーブル名/カラム名 item/product_code
[java]import java.sql.; import java.io.; import java.util.; import ch.ethz.ssh2.;
class Sitemap {
public static void main( String args[] ) {
try {
//JDBCドライバのロード Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); //各設定 String url = "jdbc:odbc:DB名"; String user = "ユーザー名"; String pass = "パスワード";
String y = null; String mo = null; String d = null; String product_code = null; String update_date = null;
//データベースに接続 Connection con = DriverManager.getConnection( url, user, pass );
System.out.println( "接続成功" );
// SQL文を作成し、情報を取得 String sql = "SELECT product_code, update_dete FROM item";
Statement ps = con.createStatement();
ResultSet rs = ps.executeQuery(sql);
//FileInputStreamオブジェクトの生成 FileOutputStream ec_sitemap = new FileOutputStream("sitemap.xml");
OutputStreamWriter out = new OutputStreamWriter( ec_sitemap, "UTF-8" );
//ファイル実行時の日付を取得 Calendar now = Calendar.getInstance();
y = String.format( "%1$tY", now ); mo = String.format( "%1$tm", now ); d = String.format( "%1$td", now );
out.write( "\n" ); out.write( "\n" ); out.write( "\t\n"); out.write( "\t\thttp://accentplus.blog134.fc2.com/\n" ); out.write( "\t\t" + y + "-"+ mo + "-" + d + "\n" ); out.write( "\t\talways\n" ); out.write( "\t\t1.0\n"); out.write( "\t\n" );
while( rs.next() ) {
product_code = rs.getString( "product_code" ); update_date = rs.getString( "update_date" );
out.write( "\t\n"); out.write( "\t\thttp://accentplus.blog134.fc2.com/?item=" + product_code + "\n" ); out.write( "\t\t" + update_date + "\n" ); out.write( "\t\tweekly\n" ); out.write( "\t\t0.7\n"); out.write( "\t\n" );
System.out.println( "product_code:" + product_code );
}
out.write( "");
//close処理
if( out != null ) {
out.close();
}
//close処理 if( ps != null ) {
ps.close();
}
//データベースを切断 if( con != null ) {
con.close();
}
//SCPでファイルアップ ch.ethz.ssh2.Connection con_scp = new ch.ethz.ssh2.Connection( "ホスト名" );
con_scp.connect();
con_scp.authenticateWithPassword( "ユーザー名", "パスワード" );
SCPClient scp = con_scp.createSCPClient();
scp.put( "./sitemap.xml", "/var/www/html/" );
con_scp.close();
} catch( Exception e ) {
e.printStackTrace();
}
}
} [/java]
ch.ethz.ssh2.Connection を使用するには、ch.ethz.ssh2ライブラリを import する必要があり、
下記サイトから、ganymed-ssh2-build210.zipをダウンロードします。
●Ganymed SSH-2 for Java
http://www.ganymed.ethz.ch/ssh2/
ファイルを解凍し、srcフォルダ内にあるchフォルダをC:\Javaの直下(javaの開発キットと同階層)に移動。
これで scp.put コマンドでローカルに置いてあるファイルを本番サーバへアップロードすることができるようになります。
ch.ethz.ssh2.Connection で接続先のホスト名を指定し、scp.put で「ローカルのどこのファイル」を「本番サーバのどこのディレクトリ」にアップロードするか指定します。
●javaプログラムのコンパイル
> javac Sitemap.java
を実行することで、Sitemap.classというファイルが作成されます。
●classファイルの実行
> java Sitemap
●出力結果
System.out.println( "product_code:" + product_code ); で記述した商品コードが表示されます。
【第1回】Java入門 - 簡単なサンプルからDB接続してsitemap.xml(サイトマップ)を作成 http://asobicocoro.com/tips/?p=70
【第2回】Java入門 - Javaの開発キッドのインストールと簡単なサンプルの作成【JDK(J2SDK)】 http://asobicocoro.com/tips/?p=71
【第3回】Java入門 - JavaでODBC接続をして、SQLを実行【JDBC】 http://asobicocoro.com/tips/?p=72
【第4回】Java入門 - Javaでsitemap.xmlを自動で生成【JDBC】 http://asobicocoro.com/tips/?p=73
【第5回】Java入門 - sitemap.xml を scp でルートドキュメントに自動アップロード【import ch.ethz.ssh2】 http://asobicocoro.com/tips/?p=74
【第6回】Java入門 - sitemap.xmlをウェブマスターツールに登録&タスクスケジューラーで自動更新 http://asobicocoro.com/tips/?p=75