Sunday, April 11, 2010

EC2 SSH ACCESS File Upload from Remote

Amazon EC2に離れた場所からファイルをアップロードする場合のコード




////////////////////////////////////////////////////////////////////////////
package logic;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/*
* EC2FileUpload is for simply upload date from your desktop to Amazon EC2 server.
* You need jar file ganymed-ssh2-build250.jar from http://www.cleondris.ch/ssh2
*/
public class EC2FileUpload {

private static String key = "path to key xx.pem";
private static String hostname = "host name";
private static String username = "user name";

public static void main(String[] args) {
EC2FileUpload f = new EC2FileUpload();
f.upload("local path", "ec2 path");
}

public void upload(String pathFrom, String pathTo) {

File keyfile = new File(key); // or "~/.ssh/id_dsa"
String keyfilePass = ""; // will be ignored if not needed

try {

Connection conn = new Connection(hostname);
conn.connect();

boolean isAuthenticated = conn.authenticateWithPublicKey(username, keyfile, keyfilePass);

if (isAuthenticated == false) {
throw new IOException("Authentication failed.");
}

Session sess = conn.openSession();
// sess.execCommand("uname -a && date && uptime && who");
sess.execCommand("ls -l " + pathTo);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
System.out.println("Here is all file you upload to server:");

while (true) {
String line = br.readLine();
if (line == null) {
break;
}
System.out.println(line);
}


SCPClient scp = conn.createSCPClient();
scp.put(pathFrom, pathTo);

sess.close();
conn.close();

} catch (IOException e) {
e.printStackTrace(System.err);
System.exit(2);
}
}
}

Java Image Resize

Java image resize code for making thumbnails.

Define Parameters:
String infile; // image from Infile
String outfile; // image to outfile
int thumbWidth; // convert max width
int thumbHeight; //convert max height
int quality; //converet quolity 0 to 100


import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Java Image Scale Converter 2009/4/5
* from JPEG or GIF format to JPEG.
*/
public class ImageScaleConverter {

String infile; // image from Infile
String outfile; // image to outfile
int thumbWidth; // convert max width
int thumbHeight; //convert max height
int quality; //converet quolity 0 to 100

public ImageScaleConverter(String infile, String outfile, int thumbWidth, int thumbHeight, int quality) {
this.infile = infile;
this.outfile = outfile;
this.thumbWidth = thumbWidth;
this.thumbHeight = thumbHeight;
this.quality = quality;
}


public void convert() {
BufferedOutputStream out = null;
try {
Image image = Toolkit.getDefaultToolkit().getImage(infile);
MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
double thumbRatio = (double) thumbWidth / (double) thumbHeight;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double) imageHeight;
if (thumbRatio < imageRatio) {
thumbHeight = (int) (thumbWidth / imageRatio);
} else {
thumbWidth = (int) (thumbHeight * imageRatio);
}
BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
thumbImage = convertToJpeg(thumbImage);

Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
out = new BufferedOutputStream(new FileOutputStream(outfile));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
out.close();
} catch (IOException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
} catch (ImageFormatException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
out.close();
} catch (IOException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

private BufferedImage convertToJpeg(BufferedImage image) {
BufferedImage convertedImage = new BufferedImage(
image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
convertedImage.getGraphics().drawImage(image, 0, 0, null);
return convertedImage;
}

public static void main(String[] args) {
ImageScaleConverter ic = new ImageScaleConverter("infile path", "outfile path", 300, 500, 100);
ic.convert();

}

}

Thursday, December 10, 2009

Glassfish v3 Preview 設定

インストールから起動まで (Jdk6必須)

cd /usr/local/src/

ここから最新版を入れる
http://download.java.net/glassfish/v3.1/nightly/

wget xxx

unzip glassfish-v3-preview.zip
mv glassfishv3 ../
cd ../glassfishv3
./bin/asaadmin start-domain

http://xxxxx.com:4848/
で管理画面確認



warが動くまで (基本)

必要なjarを入れる場所
/usr/local/glassfishv3/glassfish/lib/
例:






■warの設定

管理画面から> Applications > Deploy
Lanchでブラウザから確認可能


Thursday, November 19, 2009

IceFaces覚え書き

●Bean内でJavaScriptを使う例

public void goWebPortf(ActionEvent event) {
JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.open('report.iface', 'myWindow');");
}


●複数のwindowで開くにはconcurrentDOMViewsをtrueに


com.icesoft.faces.concurrentDOMViews
true

Monday, April 06, 2009

GlassFish V3 Prelude + Apache 2.2 連携

GlassFish V3 Prelude + Apache 2.2 連携

OS: CENTOS

1:apxsコマンドをインストール
[root@centos ~]# yum -y install httpd-devel 

2:JKインストール
[root@centos ~]# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz
[root@centos ~]# tar zxvf tomcat-connectors-1.2.28-src.tar.gz
[root@centos ~]# cd tomcat-connectors-1.2.28-src/native/
[root@centos native]# ./configure --with-apxs=/usr/sbin/apxs && make && make install

3:GlassFish v3の設定
[注意]そのままやるとlocalhost:4848ではじかれるので、一旦ブラウザーで管理画面:4848でにはいってからすると、無事に設定できる。
[root@centos ~]# /usr/local/glassfishv3-prelude/bin/asadmin set server-config.http-service.http-listener.http-listener-1.property.jkEnabled=true
[root@centos ~]# /usr/local/glassfishv3-prelude/bin/asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK=8009

4:httpd.conf を編集
LoadModule jk_module modules/mod_jk.so

JkWorkersFile /etc/httpd/conf/worker.properties
# Where to put jk logs
  # ログをとる場合はコメントアウト
# JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send all jsp requests to GlassFish
JkMount /*.jsp worker1
# Send all glassfish-test requests to GlassFish
JkMount /glassfish-test/* worker1


5:/etc/httpd/conf/worker.properties を作成
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost.localdomain
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300