<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ゆっちのＢｌｏｇ &#187; Java EE</title>
	<atom:link href="http://yucchi-ja.com/wordpress/category/java-ee/feed/" rel="self" type="application/rss+xml" />
	<link>http://yucchi-ja.com/wordpress</link>
	<description>☆*:･°★:*:･°　ゆっちの秘密研究所　☆*:･°★:*:･°</description>
	<lastBuildDate>Sun, 25 Mar 2012 11:07:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipselink JPA2.0 動かない（＞＜）</title>
		<link>http://yucchi-ja.com/wordpress/2009/07/26/eclipselink-jpa20-%e5%8b%95%e3%81%8b%e3%81%aa%e3%81%84%ef%bc%88%ef%bc%9e%ef%bc%9c%ef%bc%89/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/07/26/eclipselink-jpa20-%e5%8b%95%e3%81%8b%e3%81%aa%e3%81%84%ef%bc%88%ef%bc%9e%ef%bc%9c%ef%bc%89/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 11:36:33 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/07/26/eclipselink-jpa20-%e5%8b%95%e3%81%8b%e3%81%aa%e3%81%84%ef%bc%88%ef%bc%9e%ef%bc%9c%ef%bc%89/</guid>
		<description><![CDATA[javax.servlet.ServletException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20090713-r [...]]]></description>
			<content:encoded><![CDATA[<pre>javax.servlet.ServletException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20090713-r4647): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource
Error Code: 0</pre>
<pre>エラーだなんて・・・まぁ、開発版を試してみただけなのでこれもありか・・・</pre>
<pre><a href="http://www.netbeans.org/kb/61/javaee/persistence_ja.html" target="_blank">Java EE 5 プラットフォームでの Java Persistence</a></pre>
<pre>NetBeans 6.8 Dev 版を使って上記サイトのチュートリアルをさらに簡単にして（手抜きとも言う） Java EE 6 で試したけどダメでした。</pre>
<p>Product Version: NetBeans IDE Dev (Build 200907241401)<br />
  <br />Java: 1.6.0_14; Java HotSpot(TM) 64-Bit Server VM 14.0-b16 </p>
<p>System: Windows Vista version 6.0 running on amd64; MS932; ja_JP (nb) </p>
<p>Userdir: C:\Users\Yucchi\.netbeans\dev</p>
<pre>何も動かないのは悔しいので persistence.xml ファイルをやけくそで下記のようにしてやったら動いた（ように見える）</pre>
<p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
  <br />&lt;persistence version=&quot;2.0&quot; xmlns=&quot;http://java.sun.com/xml/ns/persistence&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd&quot;&gt; </p>
<p>&#160;&#160;&#160; &lt;persistence-unit name=&quot;WebApplication5PU&quot; transaction-type=&quot;JTA&quot;&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;provider&gt;org.eclipse.persistence.jpa.PersistenceProvider&lt;/provider&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;jta-data-source&gt;jdbc/ee6p&lt;/jta-data-source&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;exclude-unlisted-classes&gt;false&lt;/exclude-unlisted-classes&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;properties&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;eclipselink.ddl-generation&quot; value=&quot;create-tables&quot;/&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/properties&gt; </p>
<p>&#160;&#160;&#160; &lt;/persistence-unit&gt; </p>
<p>&lt;/persistence&gt;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8211;&#160; 変更後 &#8212;&#8212;&#8212;&#8212;-</p>
<p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
  <br />&lt;persistence version=&quot;1.0&quot; xmlns=&quot;http://java.sun.com/xml/ns/persistence&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd&quot;&gt; </p>
<p>&#160; &lt;persistence-unit name=&quot;WebApplication5PU&quot; transaction-type=&quot;JTA&quot;&gt; </p>
<p>&#160;&#160;&#160; &lt;provider&gt;org.eclipse.persistence.jpa.PersistenceProvider&lt;/provider&gt; </p>
<p>&#160;&#160;&#160; &lt;exclude-unlisted-classes&gt;false&lt;/exclude-unlisted-classes&gt; </p>
<p>&#160;&#160;&#160; &lt;properties&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;eclipselink.ddl-generation&quot; value=&quot;create-tables&quot;/&gt; </p>
<p>&#160;&#160;&#160; &lt;/properties&gt; </p>
<p>&#160; &lt;/persistence-unit&gt; </p>
<p>&lt;/persistence&gt;</p>
<p>PU のバージョンを変えただけだったりします。 (^^; </p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/07/11.jpg"><img title="1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="114" alt="1" src="http://yucchi-ja.com/wordpress/wp-content/2009/07/1-thumb1.jpg" width="244" border="0" /></a></p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/07/21.jpg" target="_blank"><img title="2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="2" src="http://yucchi-ja.com/wordpress/wp-content/2009/07/2-thumb1.jpg" width="244" border="0" /></a></p>
</p>
</p>
</p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/07/31.jpg" target="_blank"><img title="3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="3" src="http://yucchi-ja.com/wordpress/wp-content/2009/07/3-thumb1.jpg" width="192" border="0" /></a> </p>
</p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/07/41.jpg" target="_blank"><img title="4" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="152" alt="4" src="http://yucchi-ja.com/wordpress/wp-content/2009/07/4-thumb1.jpg" width="244" border="0" /></a> </p>
<p>秋に Java EE 6 がリリースされる予定なのでそれにあわせて NetBeans 6.8 もリリースされるんだろうか？</p>
<p>6.8 というバージョンナンバーやこういうのを見ると一番乗りで Java EE 6 対応の統合開発環境としてリリースされるだろうと期待してしまう。</p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/07/22.jpg" target="_blank"><img title="22" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="63" alt="22" src="http://yucchi-ja.com/wordpress/wp-content/2009/07/22-thumb.jpg" width="244" border="0" /></a> <a href="http://yucchi-ja.com/wordpress/wp-content/2009/07/211.jpg" target="_blank"><img title="21" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="58" alt="21" src="http://yucchi-ja.com/wordpress/wp-content/2009/07/21-thumb.jpg" width="228" border="0" /></a> </p>
<p>ちなみに起動直後やプロジェクトを新規作成した時にちょくちょくこの吹き出しメッセージが出る。</p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/07/111.jpg"><img title="11" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="115" alt="11" src="http://yucchi-ja.com/wordpress/wp-content/2009/07/11-thumb.jpg" width="236" border="0" /></a> </p>
<p>これって・・・ もっと高性能な PC を使ってねって言われてるような気がするw</p>
<p><strong><font color="#ff0000" size="3">[ 追記 ] お魚に JDBC 食べさせたら問題なく動きました。</font></strong></p>
<p><strong><font color="#ff0000" size="3">クラス名の間違いでもなく、クラスパスがとおってないんでもなく JDBC ドライバがなかった・・・</font></strong></p>
<p><strong><font color="#ff0000" size="1">てっきり標準装備だと思ってました・・・</font></strong></p>
<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1436a45a-4143-4604-95cb-650b635aa43d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/NetBeans" rel="tag">NetBeans</a>,<a href="http://b.hatena.ne.jp/t/Java+EE" rel="tag">Java EE</a></div>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/07/26/eclipselink-jpa20-%e5%8b%95%e3%81%8b%e3%81%aa%e3%81%84%ef%bc%88%ef%bc%9e%ef%bc%9c%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSTL こういうこともできるのか</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/28/jstl-%e3%81%93%e3%81%86%e3%81%84%e3%81%86%e3%81%93%e3%81%a8%e3%82%82%e3%81%a7%e3%81%8d%e3%82%8b%e3%81%ae%e3%81%8b/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/28/jstl-%e3%81%93%e3%81%86%e3%81%84%e3%81%86%e3%81%93%e3%81%a8%e3%82%82%e3%81%a7%e3%81%8d%e3%82%8b%e3%81%ae%e3%81%8b/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 11:21:59 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/28/jstl-%e3%81%93%e3%81%86%e3%81%84%e3%81%86%e3%81%93%e3%81%a8%e3%82%82%e3%81%a7%e3%81%8d%e3%82%8b%e3%81%ae%e3%81%8b/</guid>
		<description><![CDATA[&#60;%@page contentType=&#8221;text/html&#8221;%&#62;&#60;%@page pageEncoding=&#8221;UTF-8&#8243;%&#62;
&#60;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&#160;&#160;&#160; &#8220;http://www.w3.org/TR/html4/loose.dtd&#8221;&#62;&#60;%@ taglib uri=&#8221;http://java.sun.com/jsp/jstl/core&#8221; prefix=&#8221;c&#8221; %&#62;&#60;html&#62;&#160;&#160;&#160; &#60;head&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;title&#62;偶数？　奇数？&#60;/title&#62;&#160;&#160;&#160; &#60;/head&#62;&#160;&#160;&#160; &#60;body&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;h2&#62;偶数？　奇数？&#60;/h2&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;hr/&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:set var=&#8221;miniValue&#8221; value=&#8221;2&#8243;/&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:set var=&#8221;maxValue&#8221; value=&#8221;12&#8243;/&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:forEach var=&#8221;i&#8221; begin=&#8221;2&#8243; end=&#8221;${maxValue}&#8221;&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:choose&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:when test=&#8221;${i%2 == 0}&#8221;&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:out value=&#8221;${i} は偶数です。&#8221;/&#62;&#60;br/&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;/c:when&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:otherwise&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;c:out value=&#8221;${i} は奇数です。&#8221;/&#62;&#60;br/&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;/c:otherwise&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;/c:choose&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;/c:forEach&#62;&#160;&#160;&#160; &#60;/body&#62;&#160;&#160;&#160; &#60;hr/&#62;&#160;&#160;&#160; &#60;i&#62;ビット演算は使えない\${i&#38;1 == 0}&#60;/i&#62;&#60;/html&#62;

ビット演算は使えないようです。

読むことのできない英語の本を買ってしまった。
パラパラとめくっていたらこんなことができるようなので早速試してみたしだいです。
Hatena タグ: Java EE
]]></description>
			<content:encoded><![CDATA[<p>&lt;%@page contentType=&#8221;text/html&#8221;%&gt;<br />&lt;%@page pageEncoding=&#8221;UTF-8&#8243;%&gt;
<p>&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;<br />&nbsp;&nbsp;&nbsp; &#8220;http://www.w3.org/TR/html4/loose.dtd&#8221;&gt;<br />&lt;%@ taglib uri=&#8221;http://java.sun.com/jsp/jstl/core&#8221; prefix=&#8221;c&#8221; %&gt;<br />&lt;html&gt;<br />&nbsp;&nbsp;&nbsp; &lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;偶数？　奇数？&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/head&gt;<br />&nbsp;&nbsp;&nbsp; &lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;h2&gt;偶数？　奇数？&lt;/h2&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;hr/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:set var=&#8221;miniValue&#8221; value=&#8221;2&#8243;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:set var=&#8221;maxValue&#8221; value=&#8221;12&#8243;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:forEach var=&#8221;i&#8221; begin=&#8221;2&#8243; end=&#8221;${maxValue}&#8221;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:choose&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:when test=&#8221;${i%2 == 0}&#8221;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:out value=&#8221;${i} は偶数です。&#8221;/&gt;&lt;br/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:when&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:otherwise&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:out value=&#8221;${i} は奇数です。&#8221;/&gt;&lt;br/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:otherwise&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:choose&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:forEach&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br />&nbsp;&nbsp;&nbsp; &lt;hr/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;i&gt;ビット演算は使えない\${i&amp;1 == 0}&lt;/i&gt;<br />&lt;/html&gt;
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/28.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="379" alt="2" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/2-thumb4.jpg" width="269" border="0"></a>
<p>ビット演算は使えないようです。
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/115.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="55" alt="1" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/1-thumb6.jpg" width="554" border="0"></a>
<p>読むことのできない英語の本を買ってしまった。
<p>パラパラとめくっていたらこんなことができるようなので早速試してみたしだいです。
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9aef64d2-810d-4083-b307-9892537cd6b5" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div></p>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/28/jstl-%e3%81%93%e3%81%86%e3%81%84%e3%81%86%e3%81%93%e3%81%a8%e3%82%82%e3%81%a7%e3%81%8d%e3%82%8b%e3%81%ae%e3%81%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleton Session Beans の並行処理 その３</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/28/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86-%e3%81%9d%e3%81%ae%ef%bc%93/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/28/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86-%e3%81%9d%e3%81%ae%ef%bc%93/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 10:19:40 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/28/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86-%e3%81%9d%e3%81%ae%ef%bc%93/</guid>
		<description><![CDATA[この前のサンプルはちょっとあれでしたので Sun のチュートリアルとほぼ同じコードを載せておきます。
package counter.web;
import counter.ejb.CounterBean;import  [...]]]></description>
			<content:encoded><![CDATA[<p>この前のサンプルはちょっと<strong>あれ</strong>でしたので Sun のチュートリアルとほぼ同じコードを載せておきます。</p>
<p>package counter.web;
<p>import counter.ejb.CounterBean;<br />import javax.ejb.EJB;<br />import javax.faces.bean.ManagedBean;<br />import javax.faces.bean.SessionScoped;
<p>@ManagedBean<br />@SessionScoped<br />public class Count {
<p>&nbsp;&nbsp;&nbsp; @EJB<br />&nbsp;&nbsp;&nbsp; private CounterBean counterBean;<br />&nbsp;&nbsp;&nbsp; private int hitCount;
<p>&nbsp;&nbsp;&nbsp; public Count() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.hitCount = 0;<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; public int getHitCount() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hitCount = counterBean.getHits();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hitCount;<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; public void setHitCount(int newHits) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.hitCount = newHits;<br />&nbsp;&nbsp;&nbsp; }<br />}
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>package counter.ejb;
<p>import java.util.logging.Level;<br />import java.util.logging.Logger;<br />import javax.ejb.AccessTimeout;<br />import javax.ejb.ConcurrencyManagement;<br />import javax.ejb.ConcurrencyManagementType;<br />import javax.ejb.Lock;<br />import javax.ejb.LockType;<br />import javax.ejb.Singleton;
<p>@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) // デフォルトで適用されるので無くてもOK<br />@Singleton<br />@AccessTimeout(value = 20000)<br />public class CounterBean {
<p>&nbsp;&nbsp;&nbsp; private int hits = 1;
<p>&nbsp;&nbsp;&nbsp; @Lock(LockType.WRITE)　// デフォルトで適用されるので無くてもOK<br />&nbsp;&nbsp;&nbsp; public int getHits() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(2000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ex) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logger.getLogger(CounterBean.class.getName()).log(Level.SEVERE, null, ex);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hits++;<br />&nbsp;&nbsp;&nbsp; }<br />}
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
<p>&lt;?xml version=&#8217;1.0&#8242; encoding=&#8217;UTF-8&#8242; ?&gt;<br />&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221;<br />&nbsp;&nbsp;&nbsp; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;<br />&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:h=&#8221;http://java.sun.com/jsf/html&#8221;&gt;<br />&nbsp;&nbsp;&nbsp; &lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;h:outputText value=&#8221;This page has been accessed #{count.hitCount} time(s).&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br />&lt;/html&gt;
<p>以上です。
<p>CounterBean をこのように変更することも可能です。
<p>@ConcurrencyManagement(ConcurrencyManagementType.<font color="#ff0000">BEAN</font>)<br />@Singleton<br />@AccessTimeout(value = 20000)<br />public class CounterBean {
<p>&nbsp;&nbsp;&nbsp; private int hits = 1;
<p>&nbsp;&nbsp;&nbsp; public <font color="#ff0000">synchronized</font> int getHits() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(2000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ex) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logger.getLogger(CounterBean.class.getName()).log(Level.SEVERE, null, ex);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hits++;<br />&nbsp;&nbsp;&nbsp; }<br />}
<p>このような便利な機能を使わない場合は</p>
<p>@ConcurrencyManagement(ConcurrencyManagementType.<font color="#ff0000">CONCURRENCY_NOT_ALLOWED</font>) とすればいいみたい。</p>
<p>う～ん・・・　いまいちこの機能のありがたさが解らない。</p>
<p>JEE6 が正式リリースされたら誰かが解りやすいサンプルと解説をしてくれるだろうからそれまで気長に待つとしよう（＾＾；</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:63f14872-dfda-4c37-96c6-e2d4f7ebc450" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/28/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86-%e3%81%9d%e3%81%ae%ef%bc%93/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleton Session Beans の並行処理　その２</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/26/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%92/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/26/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%92/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 22:44:46 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/26/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%92/</guid>
		<description><![CDATA[この前調べたのをもとにサンプルを組んで動かしてみました。
アノテーションの表記が若干上手くいかないところがあったがなんとか動きました。
何故かは調べてないのですが動いたから良しとします。（＾＾；
サンプルコードは下記のと [...]]]></description>
			<content:encoded><![CDATA[<p>この前調べたのをもとにサンプルを組んで動かしてみました。</p>
<p>アノテーションの表記が若干上手くいかないところがあったがなんとか動きました。</p>
<p>何故かは調べてないのですが動いたから良しとします。（＾＾；</p>
<p>サンプルコードは下記のとおりです。</p>
<p>素人が組んだコードですので間違い等ございますでしょうがおおらかな心でご覧ください。</p>
<p>import java.util.logging.Level;<br />import java.util.logging.Logger;<br />import javax.ejb.AccessTimeout;<br />import javax.ejb.ConcurrencyManagement;<br />import javax.ejb.ConcurrencyManagementType;<br />import javax.ejb.Lock;<br />import javax.ejb.LockType;<br />import javax.ejb.Singleton;
<p>/**<br />*<br />* @author Yucchi<br />*/<br />@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)<br />@Singleton<br />@AccessTimeout(value = 20000)<br />public class Question {
<p>&nbsp;&nbsp;&nbsp; @AccessTimeout(value = 5000)<br />&nbsp;&nbsp;&nbsp; @Lock(LockType.READ)<br />&nbsp;&nbsp;&nbsp; public String getshoulderMessage() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(3000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ex) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logger.getLogger(Question.class.getName()).log(Level.SEVERE, null, ex);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;肩が痛くてたまらん（＞＜）&#8221;;<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; @AccessTimeout(value = 19000)<br />&nbsp;&nbsp;&nbsp; @Lock(LockType.WRITE)<br />&nbsp;&nbsp;&nbsp; public String getWaistMessage() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(15000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ex) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logger.getLogger(Question.class.getName()).log(Level.SEVERE, null, ex);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;腰が痛くてたまらん（＞＜）&#8221;;<br />&nbsp;&nbsp;&nbsp; }<br />}
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
<p>import java.io.IOException;<br />import java.io.PrintWriter;<br />import javax.ejb.EJB;<br />import javax.servlet.ServletException;<br />import javax.servlet.annotation.WebServlet;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;
<p>/**<br />*<br />* @author Yucchi<br />*/<br />@WebServlet(urlPatterns = &#8220;/Shoulder&#8221;)<br />public class Shoulder extends HttpServlet {
<p>&nbsp;&nbsp;&nbsp; @EJB<br />&nbsp;&nbsp;&nbsp; private Question question;
<p>&nbsp;&nbsp;&nbsp; protected void processRequest(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType(&#8220;text/html;charset=UTF-8&#8243;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintWriter out = response.getWriter();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;html&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;head&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;title&gt;Servlet Shoulder&lt;/title&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;/head&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;body&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;Servlet Shoulder at &#8221; + request.getContextPath());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;br&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(question.getshoulderMessage());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;/body&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;/html&gt;&#8221;);
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } finally {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; @Override<br />&nbsp;&nbsp;&nbsp; protected void doGet(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processRequest(request, response);<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; @Override<br />&nbsp;&nbsp;&nbsp; protected void doPost(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processRequest(request, response);<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; @Override<br />&nbsp;&nbsp;&nbsp; public String getServletInfo() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;肩の調子はどうだい？&#8221;;<br />&nbsp;&nbsp;&nbsp; }// &lt;/editor-fold&gt;<br />}
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
<p>import java.io.IOException;<br />import java.io.PrintWriter;<br />import javax.ejb.EJB;<br />import javax.servlet.ServletException;<br />import javax.servlet.annotation.WebServlet;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;
<p>/**<br />*<br />* @author Yucchi<br />*/<br />@WebServlet(urlPatterns = &#8220;/Waist&#8221;)<br />public class Waist extends HttpServlet {
<p>&nbsp;&nbsp;&nbsp; @EJB<br />&nbsp;&nbsp;&nbsp; private Question question;
<p>&nbsp;&nbsp;&nbsp; protected void processRequest(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType(&#8220;text/html;charset=UTF-8&#8243;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintWriter out = response.getWriter();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;html&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;head&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;title&gt;Servlet Waist&lt;/title&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;/head&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;body&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;Servlet Waist at &#8221; + request.getContextPath());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;br&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(question.getWaistMessage());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;/body&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(&#8220;&lt;/html&gt;&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } finally {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; @Override<br />&nbsp;&nbsp;&nbsp; protected void doGet(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processRequest(request, response);<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; @Override<br />&nbsp;&nbsp;&nbsp; protected void doPost(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processRequest(request, response);<br />&nbsp;&nbsp;&nbsp; }
<p>&nbsp;&nbsp;&nbsp; @Override<br />&nbsp;&nbsp;&nbsp; public String getServletInfo() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;腰の調子はどうだい？&#8221;;<br />&nbsp;&nbsp;&nbsp; }// &lt;/editor-fold&gt;<br />}
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>&lt;%@page contentType=&#8221;text/html&#8221;%&gt;<br />&lt;%@page pageEncoding=&#8221;UTF-8&#8243;%&gt;
<p>&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;<br />&nbsp;&nbsp;&nbsp; &#8220;http://www.w3.org/TR/html4/loose.dtd&#8221;&gt;<br />&lt;html&gt;<br />&nbsp;&nbsp;&nbsp; &lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=UTF-8&#8243;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;JSP Page&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/head&gt;<br />&nbsp;&nbsp;&nbsp; &lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;h1&gt;JSP Page&lt;/h1&gt;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&#8221;/ConcurrencyManagementTest/Shoulder&#8221; target=&#8221;_blank&#8221;&gt;肩の調子はどう？&lt;/a&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&#8221;/ConcurrencyManagementTest/Waist&#8221; target=&#8221;_blank&#8221;&gt;腰の調子はどう？&lt;/a&gt;
<p>&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br />&lt;/html&gt;
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>以上お粗末なサンプルです。</p>
<p>実行結果はこのようになります。</p>
<p>JSP のリンクを「腰の調子はどう？」、「肩の調子はどう？」の順番で開きます。</p>
<p>getWaistMessage() が実行されてる間はロックされ getshoulderMessage() メソッドが実行待ちになります。</p>
<p>しかしタイムアウト設定が働き getshoulderMessage() メソッドは実行されずに終了してしまいます。</p>
<p>getWaistMessage() の処理が終わり Waist サーブレットの処理が完了します。</p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/114.jpg" target="_blank"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="552" alt="1" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/1-thumb5.jpg" width="968" border="0"></a> </p>
<p>もし、興味があるようでしたら @Lock アノテーションの属性を変えてみたり、処理時間とタイムアウト設定を変更してグリグリしてみると楽しい結果がまっているでしょう。（たぶん）</p>
<p>私の場合、想像していた動作じゃなくてちょっと焦りました。（勉強不足です。）</p>
<p>やはり、実際に動かして確かめないと解らないことってありますね。</p>
<p>&nbsp;</p>
<p><font color="#ff0000">[ 追記 ]</font> 　ちょっとあまりにも不親切な内容だったので（＾＾；　</p>
<p>ちなみに @Lock(LockType.WRITE) アノテーションのついてるメソッドへのアクセスはただ一つだけ許されます。</p>
<p>よって「腰の調子はどう？」のリンクを複数開いた場合順番に一つずつ処理されていきます。</p>
<p>対して @Lock(LockType.READ) アノテーションのついたメソッドは同時に複数のアクセスを許します。</p>
<p>よって「肩の調子はどう？」のリンクを複数開いた場合順番待ちにならず同時に処理されます。</p>
<p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:957095cf-cb83-43a6-b295-e922d9a1ceff" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div></p>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/26/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%92/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JNDI ポータブル名</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/16/jndi-%e3%83%9d%e3%83%bc%e3%82%bf%e3%83%96%e3%83%ab%e5%90%8d/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/16/jndi-%e3%83%9d%e3%83%bc%e3%82%bf%e3%83%96%e3%83%ab%e5%90%8d/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 11:45:28 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/16/jndi-%e3%83%9d%e3%83%bc%e3%82%bf%e3%83%96%e3%83%ab%e5%90%8d/</guid>
		<description><![CDATA[ちょっと気になってたこと
java:global[/&#60;app-name&#62;]/&#60;module-name&#62;/&#60;bean-name&#62;[!&#60;fully-qualified-interfa [...]]]></description>
			<content:encoded><![CDATA[<p>ちょっと気になってたこと</p>
<p>java:global[/&lt;app-name&gt;]/&lt;module-name&gt;/&lt;bean-name&gt;[!&lt;fully-qualified-interface-name&gt;]</p>
<p>と言うように記述することにより GlassFish や JBoss でも問題ないようになるらしい。</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cbca4b36-86db-4031-b800-631441d34e26" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/16/jndi-%e3%83%9d%e3%83%bc%e3%82%bf%e3%83%96%e3%83%ab%e5%90%8d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Singleton Session Beans の並行処理</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/14/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/14/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 22:21:59 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/14/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86/</guid>
		<description><![CDATA[javax.ejb.ConcurrencyManagementType.CONTAINER あるいは javax.ejb.ConcurrencyManagementType.BEAN を使用すればいいようだ。
@Conc [...]]]></description>
			<content:encoded><![CDATA[<p>javax.ejb.ConcurrencyManagementType.CONTAINER あるいは javax.ejb.ConcurrencyManagementType.BEAN を使用すればいいようだ。</p>
<pre><b><font color="#ff0000">@ConcurrencyManagement(CONTAINER)</font></b>
@Singleton
public class ExampleSingletonBean {
  private String state;

  <b><font color="#ff0000">@Lock(READ)</font></b>
  public String getState() {
    return state;
  }

  <b><font color="#ff0000">@Lock(WRITE)</font></b>
  public void setState(String newState) {
    state = newState;
  }
}</pre>
<p><font color="#000000">@ConcurrencyManagement(CONTAINER)　アノテーションによってコンテナによって並行処理を管理する。</font></p>
<p><font color="#000000">ちなみにデフォルトで <font color="#000000">@ConcurrencyManagement(CONTAINER)</font> が設定されるようなのです。</font></p>
<p><font color="#000000">これを利用することによって、<tt>@Lock(READ) </tt>と <tt>@Lock(WRITE) アノテーションによって排他制御を可能とする。</tt></font></p>
<p><font color="#000000"><tt></tt></font>&nbsp;</p>
<p><font color="#000000"><tt><strong>タイムアウトの設定方法</strong></tt></font></p>
<p><tt>@AccessTimeout</tt><font face="Courier New" color="#000000"><strong> </strong>アノテーションによって可能となります。</font></p>
<p><font face="Courier New" color="#000000">下記コードでは Singleton Session Bean のデフォルトタイムアウトの設定時間は 120000 ミリ秒となってます。</font></p>
<p>doTediousOperation メソッドのタイムアウト設定時間は Singleton Session Bean のデフォルトタイムアウト時間より優先され 360000 ミリ秒となります。</p>
<pre>@Singleton
<font color="#ff0000">@AccessTimeout(value=120000)</font>
public class StatusSingletonBean {
  private String status;

  @Lock(WRITE)
  public void setStatus(String new Status) {
    status = newStatus;
  }

  @Lock(WRITE)
  <font color="#ff0000">@AccessTimeout(value=360000)</font>
  public void doTediousOperation() {
    ...
  }
}</pre>
<pre>ちなみに TimeUnit.SECONDS 定数を使えばこのように解りやすくなります。</pre>
<pre>@Singleton
<font color="#ff0000">@AccessTimeout(value=60, timeUnit=SECONDS)</font>
public class StatusSingletonBean { ... }</pre>
<pre>&nbsp;</pre>
<pre><b>@ConcurrencyManagement(BEAN)</b> による並行処理は全てのビジネスメソッド及びタイムアウトメソッドの並行処理を可能とします。</pre>
<pre>ただし、それらは開発者によりすべてのクライアントへの同期化を保証する責任があります。</pre>
<pre>Java の並行処理技術を駆使して高レベルなプログラミング技術が必要とされるようです。</pre>
<pre><b><font color="#ff0000">@ConcurrencyManagement(BEAN)</font></b>
@Singleton
public class AnotherSingletonBean { ... }</pre>
<pre>&nbsp;</pre>
<pre><a href="http://java.sun.com/javaee/6/docs/tutorial/doc/index.html" target="_blank">Java EE 6 Tutorial</a> の Singleton Session Bean の並行処理をざっと目を通してる最中ですが<font color="#000000">なかなか凝ってますね。</font></pre>
<pre><font color="#000000">最後にこの内容は英語が駄目な素人が勝手に解釈したメモ書き程度のものですから詳しく知りたい方は<a href="http://java.sun.com/javaee/6/docs/tutorial/doc/index.html" target="_blank">本家のチュートリアル</a>をご参照くださいませ。</font></pre>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b24e9bf4-29f1-4c7b-9e16-954dd09989ad" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div>
<pre>&nbsp;</pre>
<p><font color="#000000"><tt></tt></font></p>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/14/singleton-session-beans-%e3%81%ae%e4%b8%a6%e8%a1%8c%e5%87%a6%e7%90%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleton Session Bean Initialization</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/14/session-bean-initialization/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/14/session-bean-initialization/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 21:02:05 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/14/session-bean-initialization/</guid>
		<description><![CDATA[The Java EE 6 Tutorial より Singleton Session Bean の初期化にはこんなのもありだ。
@Singleton
public class PrimaryBean { ... }
S [...]]]></description>
			<content:encoded><![CDATA[<p>The Java EE 6 Tutorial より Singleton Session Bean の初期化にはこんなのもありだ。</p>
<pre>@Singleton
public class PrimaryBean { ... }</pre>
<p><tt>SecondaryBean</tt> depends on <tt>PrimaryBean</tt>:
<pre>@Singleton
<font color="#ff0000">@DependsOn("PrimaryBean")</font>
public class SecondaryBean { ... }</pre>
<p>これで EJB コンテナが SecondaryBean の前に PrimaryBean を初期化することを保証するらしい。</p>
<p><font color="#000000">φ(．．)メモメモ</font></p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:40167f09-ab3f-457f-84e3-5c381909492f" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/14/session-bean-initialization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javax.ejb.Schedule その２</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/09/javaxejbschedule-%e3%81%9d%e3%81%ae%ef%bc%92/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/09/javaxejbschedule-%e3%81%9d%e3%81%ae%ef%bc%92/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 03:39:47 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/09/javaxejbschedule-%e3%81%9d%e3%81%ae%ef%bc%92/</guid>
		<description><![CDATA[昨日のつづきです。
@Schedule(dayOfMonth = &#8220;1&#8243;, hour = &#8220;7&#8243;, minute = &#8220;30&#8243;)&#160;&#038;nbs [...]]]></description>
			<content:encoded><![CDATA[<p>昨日のつづきです。</p>
<p>@Schedule(dayOfMonth = &#8220;1&#8243;, hour = &#8220;7&#8243;, minute = &#8220;30&#8243;)<br />&nbsp;&nbsp;&nbsp; public void hoge() {<br />&nbsp;&nbsp;&nbsp; // &#8230;<br />}
<p>とすると、毎月午前7 時 30 分に hoge() メソッドが実行される。
<p>@Schedules({@Schedule(hour = &#8220;5&#8243;),@Schedule(hour = &#8220;15&#8243;, dayOfWeek = &#8220;Wed&#8221;)})<br />&nbsp;&nbsp;&nbsp; public void hogehoge() {<br />&nbsp;&nbsp;&nbsp; // &#8230;<br />}
<p>は二つのタイマーを持つ。
<p>一つは、毎日午前 5 時に、もう一つは毎週水曜日の午後 3 時に hogehoge() メソッドを実行させます。
<p>@Schedule アノテーションによってカレンダーを基本にタイマーを設定しているようです。
<p>これらの機能はデフォルトでサーバーがシャットダウンし、再起動しても実行されるようです。
<p>オプションで無効にするには下記のように persistent = false を設定します。
<p>@Schedule(minute = &#8220;*/15&#8243;, hour = &#8220;*&#8221;, persistent = false)<br />　　　　public void hogehogehoge() {<br />　　　　// &#8230;<br />}
<p>これで 15 分毎に hogehogehoge() メソッドを実行します。
<p>ただし、サーバーがダウンし、再起動した場合は実行されません。
<p>ちなみに stateful beans ではこのタイマーサービスを使えない（使わない方がいい）ようです。</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1144fbb3-c425-425b-a271-2ba6dc274ce8" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/09/javaxejbschedule-%e3%81%9d%e3%81%ae%ef%bc%92/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javax.ejb.Schedule</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/08/javaxejbschedule/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/08/javaxejbschedule/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 11:44:24 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/08/javaxejbschedule/</guid>
		<description><![CDATA[@Schedule の API ドキュメント見たけど Optional Element Summary の設定値のなかに ＊ ってあるけど意味が解らない。
@Schedule(second=&#8221;*/3&#824 [...]]]></description>
			<content:encoded><![CDATA[<p>@Schedule の API ドキュメント見たけど Optional Element Summary の設定値のなかに ＊ ってあるけど意味が解らない。</p>
<p>@Schedule(second=&#8221;*/3&#8243;, minute=&#8221;*&#8221;, hour=&#8221;*&#8221;, info=&#8221;@Schedule の * ってなんだ？&#8221;)</p>
<p>上記のコードの場合 3 秒ごとにスケジュールされていると思う。</p>
<p>info の項目はただの情報だとしても時間、分、秒の設定が良く解らない。</p>
<p>minute=&#8221;*&#8221; と hour=&#8221;*&#8221; は設定無しの無限大というところでしょうか？</p>
<p>ちなみに時間、分、秒のデフォルト設定値は 0 となってました。</p>
<p>second=&#8221;3&#8243; じゃなくて何故 second=&#8221;*/3&#8243; とするんだろう？</p>
<p>根本的に考え方を間違っているのだろうか？</p>
<p>&nbsp;</p>
<p>追記</p>
<p>second=&#8221;*/3&#8243; の＊はワイルドカードと呼ばれるものらしい。</p>
<p>で、second=&#8221;30/10&#8243; とすれば、30 , 40 , 50 秒と実行されるようだ。</p>
<p>つまり、 / の前がスタート時間で後ろがインターバル時間ってこと？かも（＾＾；</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6e5e23ff-df34-4533-acc1-937c2c52166d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/08/javaxejbschedule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>startup/shutdown callbacks</title>
		<link>http://yucchi-ja.com/wordpress/2009/06/08/startupshutdown-callbacks/</link>
		<comments>http://yucchi-ja.com/wordpress/2009/06/08/startupshutdown-callbacks/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 18:27:55 +0000</pubDate>
		<dc:creator>Yucchi</dc:creator>
				<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://yucchi-ja.com/wordpress/2009/06/08/startupshutdown-callbacks/</guid>
		<description><![CDATA[Java EE 6 良く解らないけど動かしてみました。
コードはこのようになってます。
 
 
&#160;
@Startup アノテーションによって @PostConstruct アノテーションの付加された start [...]]]></description>
			<content:encoded><![CDATA[<p>Java EE 6 良く解らないけど動かしてみました。</p>
<p>コードはこのようになってます。</p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/110.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="491" alt="1" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/1-thumb2.jpg" width="863" border="0"></a> </p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/25.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="329" alt="2" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/2-thumb2.jpg" width="537" border="0"></a> </p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/36.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="582" alt="3" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/3-thumb2.jpg" width="579" border="0"></a>&nbsp;</p>
<p>@Startup アノテーションによって @PostConstruct アノテーションの付加された startup() メソッドが Web アプリケーションを配備完了後にすぐに呼ばれるようだ。</p>
<p>配備取り消しの場合は @PreDestroy アノテーションの付加された shutdown() メソッドが呼ばれるみたい。</p>
<p>@Startup アノテーションがなければ @PostConstruct アノテーションの付加された startup() メソッドと @PreDestroy アノテーションの付加された shutdown() メソッドは呼ばれない。</p>
<p>とりあえず @Startup アノテーションによってこのように動作するようだ。</p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/122.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="261" alt="12" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/12-thumb2.jpg" width="736" border="0"></a> </p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/132.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="259" alt="13" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/13-thumb2.jpg" width="737" border="0"></a> </p>
<p><a href="http://yucchi-ja.com/wordpress/wp-content/2009/06/111.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="252" alt="11" src="http://yucchi-ja.com/wordpress/wp-content/2009/06/11-thumb1.jpg" width="1014" border="0"></a> </p>
<p>@Startup アノテーションによって Web アプリケーションの準備と後始末をすませようとしているような気がする。</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:847fe2d2-5a0e-4059-b23a-f50d741e19bd" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Hatena タグ: <a href="http://b.hatena.ne.jp/t/Java%20EE" rel="tag">Java EE</a></div>
]]></content:encoded>
			<wfw:commentRss>http://yucchi-ja.com/wordpress/2009/06/08/startupshutdown-callbacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

