炊きたてのご飯が食べたい

定時に帰れるっていいね。自宅勤務できるっていいね。子どもと炊きたてのご飯が食べられる。アクトインディでは積極的にエンジニアを募集中です。

Java入門 - sitemap.xml を scp でルートドキュメントに自動アップロード【import ch.ethz.ssh2】


Javaの動作環境

WindowsXP

接続先のDB

Oracle

※ローカル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入門 - JavaODBC接続をして、SQLを実行【JDBChttp://asobicocoro.com/tips/?p=72

【第4回】Java入門 - Javaでsitemap.xmlを自動で生成【JDBChttp://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