Category: ‘Java’

2016年10月25日 Posted by PURGE

Rubyを利用するようになって、「面倒臭いので2度とJavaなど書くものか。」と決めてから、早7~8年。Java8 に興味を持ち始めた。Rubyのお気軽さに、ちょっと飽きた感がある。

自分が最後に見たのは、Java5。資格を取ったのも Java1.4。何の役にも立たなくなっている。
そこで、ちょっとした興味でJavaへの回帰。

import java.util.ArrayList;
import java.util.List;

public class PrintListSample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<>();
		list.add("Java");
		list.add("Ruby");
		list.add("C#");
		
		//古いスタイル
		printListWithOldLoop(list);
		
		//通常スタイル
		printListWithLoop(list);
		
		//Streamスタイル
		printListWithStream(list);
	}

	/*
	 * 古いスタイル
	 */
	private static void printListWithOldLoop(ArrayList<String> list) {
		for(int i = 0; i < list.size(); i++){
			System.out.println(list.get(i));
		}
	}

	/*
	 * 通常スタイル
	 */
	private static void printListWithLoop(ArrayList<String> list) {
		for(String s : list){
			System.out.println(s);
		}
	}

	/*
	 * Stream
	 */
	private static void printListWithStream(List<String> list) {
		list.stream().forEach(System.out::println);
	}
	
}

ちなみに、IDEをeclipse使用している場合、1.8に対応していないとエラーとなるので注意。

Glassfishサーバがハングった場合の対応方法 on Windows Server

2015年4月16日 Posted by PURGE

■ポート番号(4848)からGlassfishプロセス番号を確認

 PS C:\glassfish3\bin> netstat -oa

 プロトコル  ローカル アドレス   外部アドレス  状態   PID
 TCP  [::]:4848  myhost:0   LISTENING  9076

■プロセスの強制終了

 PS C:\glassfish3\bin> taskkill /pid 9076 /F
 成功: PID 9076 のプロセスは強制終了されました。

■Glassfishの再起動

 PS C:\glassfish3\bin> .\asadmin start-domain domain1
 domain1の起動を待機しています .................................
 domain が正常に起動されました: domain1
 domain 場所: C:\glassfish3\glassfish\domains\domain1
 ログ・ファイル: C:\glassfish3\glassfish\domains\domain1\logs\server.log
 管理ポート: 4848
 コマンドstart-domainは正常に実行されました。

Glassfishサーバ起動失敗

2015年2月9日 Posted by PURGE

ハマったので覚え書き。
Glassfishサーバ起動失敗時の対応を下記に記す。

なぜか下記のエラー。

PS C:\glassfish3\bin> .\asadmin start-domain
domain1の起動を待機しています .domain domain1の起動中にエラーが発生しました。
サーバーは処理の途中で終了しました(終了コード1)。
終了する前に次の出力が生成されました:

Launching GlassFish on Felix platform
ERROR: Error creating bundle cache. (java.lang.Exception: Unable to create bundle cache lock file: java.io.FileNotFoundException: C:\glassfish3\glassfish\domains\domain1\osgi-cache\felix\cache.lock (アクセスが拒否されました。))
java.lang.Exception: Unable to create bundle cache lock file: java.io.FileNotFoundException: C:\glassfish3\glassfish\domains\domain1\osgi-cache\felix\cache.lock (アクセスが拒否されました。)
        at org.apache.felix.framework.cache.BundleCache.<init>(BundleCache.java:168)
        at org.apache.felix.framework.Felix.init(Felix.java:629)
        at com.sun.enterprise.glassfish.bootstrap.osgi.OSGiFrameworkLauncher$1.run(OSGiFrameworkLauncher.java:88)

調べた結果、下記フォルダ以下を全削除したら起動した。

C:\glassfish3\glassfish\domains\domain1\osgi-cache\felix
C:\glassfish3\glassfish\domains\domain1\applications

eclipse のコンソールで日本語の文字化け

2014年3月1日 Posted by PURGE

eclipse インストールフォルダにある eclipse.ini に下記を記述する。

-Dfile.encoding=UTF-8

解決。

SAStrutsでformクラスが見つからないエラー

2013年7月25日 Posted by PURGE

コンポーネント(class com.whoocus.app.form.xxxxForm)が見つかりません

こんな時は、下記をそれぞれのdiconファイルに追記してやる。

creator.dicon

<component class="org.seasar.struts.creator.FormCreator"/>

customizer.dicon

<component name="formCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain"/>

毎回ハマる。(-_-;)

Seasar2 SAStruts でのjspファイルの配置場所

2013年7月8日 Posted by PURGE

SAStrutsでの、jspファイルの配置場所に迷った。
基本、ActionからフォワードされるJSPファイルはWEB-INF以下に配置するべきである。
下記がそれぞれの設定。

web.xml

  <context-param>
        <param-name>sastruts.VIEW_PREFIX</param-name>
        <param-value>/WEB-INF/view</param-value>
    </context-param>

    <!-- commonディレクトリも/WEB-INF/view 以下に移動した場合 -->
    <jsp-config>
    	<jsp-property-group>
    		<url-pattern>*.jsp</url-pattern>
    		<el-ignored>false</el-ignored>
    		<page-encoding>UTF-8</page-encoding>
    		<scripting-invalid>false</scripting-invalid>
    		<include-prelude>/WEB-INF/view/common/common.jsp</include-prelude>
    	</jsp-property-group>
    </jsp-config>

IndexAction.java

public class IndexAction {
	
    @Execute(validator = false)
    public String index() {
        return "index/index.jsp";
    }
}

WEB-INF/view/index/index.jsp

<html>
<head>index.jsp</head>
<body>
Hello.
</body>
</html>

Seasar2 と DWR連携 その2

2013年7月7日 Posted by PURGE

なぜか久しぶりにJavaを触ることとなり、以前挑んでいたDRW(Java用のAjaxライブラリ)の検証することとなった。すっかり忘れている。

以前、記事を書いていたことすら忘れていて、ググってみたら、自分のBlog記事に助けてもらった。
正直、書いたことすら覚えていない。

何はともあれ、Java Object をJavaScriptのオブジェクトに変換するには、下記の記述で良い。

JavaScript

<script type="text/javascript">
	$(function() {
 		$( "#sendBtn" ).click(function() {
  			ajaxRemoteService.getPerson(callBack);
 		});
	
    		function callBack(person){
			alert(person.name);
		}			   
	});
</script>

dwr.xml

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">
<dwr>
    <init>
        <creator id="s2creator" class="packagename.S2Creator" />
    </init>
    <allow>
		<create creator="s2creator" javascript="ajaxRemoteService">
			<param name="serviceName" value="ajaxRemoteService"/>
		</create>
		<convert converter="bean" match="packagename.Person" javascript="Person"/>    
    </allow>
</dwr>

Person.java

package packagename;

public class Person {
	private String name;
	private int age;
	private String address;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
}

CentOSへJDK1.7のインストール

2013年6月18日 Posted by PURGE

久しぶりにJavaのサーバへのインストール。

OracleのサイトからJDKを選択して、ダウンロードの同意をして、サーバは64bit版OSなので jdk-7u21-linux-x64.rpm をダウンロードする。

適当な場所で、下記コマンドラインからRPMインストール。

$ rpm -ivh jdk-7u21-linux-x64.rpm
準備中...                ##################################### [100%]
   1:jdk                ##################################### [100%]
Unpacking JAR files...
	rt.jar...
	jsse.jar...
	charsets.jar...
	tools.jar...
	localedata.jar...

javaがインストールされているかの確認

$ java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

$ which java
/usr/bin/java

すると /usr/bin/java にインストールされるようだ。

DefaultLineMapperでの実行時エラー

2012年10月24日 Posted by PURGE

下記のエラーが出た。

org.springframework.batch.item.file.FlatFileParseException

DelimitedLineTokenizerで定義している変数名と、FieldSetMapperで実装しているマッピング変数の名前と数が合っているかを確かめよう。私の場合は、うっかりスペルミス。

Spring Batch JobRepository使用時のシーケンスエラー

2012年10月23日 Posted by PURGE

MySQL では動作するのだが、Oracleに移行した途端にエラー。
シーケンスが無いとのこと。

どうやら、MySQLの場合は、下記をテーブルとして実装しても動作するのだが、Oracleだとシーケンスとして作成する必要があるようだ。

MySQLだと下記でも動作する。

CREATE TABLE BATCH_STEP_EXECUTION_SEQ (
	ID BIGINT NOT NULL
);

CREATE TABLE BATCH_JOB_EXECUTION_SEQ (
	ID BIGINT NOT NULL
);

CREATE TABLE BATCH_JOB_SEQ (
	ID BIGINT NOT NULL
);

INSERT INTO BATCH_STEP_EXECUTION_SEQ VALUES(0);
INSERT INTO BATCH_JOB_EXECUTION_SEQ VALUES(0);
INSERT INTO BATCH_JOB_SEQ VALUES(0);

Oracleでは、Tableではなく、Sequenceを定義。

CREATE SEQUENCE BATCH_STEP_EXECUTION_SEQ MAXVALUE 9223372036854775807 CYCLE;
CREATE SEQUENCE BATCH_JOB_EXECUTION_SEQ MAXVALUE 9223372036854775807 CYCLE;
CREATE SEQUENCE BATCH_JOB_SEQ MAXVALUE 9223372036854775807 CYCLE;

こちらを参考にした。