ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

”20代の新卒入社、4割が「後悔」約5割は「リベンジ転職」を視野に入れている”とのこと

2015-09-17 19:19:19 | Weblog
ここの記事

20代の新卒入社、4割が「後悔」 約5割は「リベンジ転職」を視野に入れている
http://bg-mania.jp/2015/09/03137294.html

最近は「リベンジ転職」なんて言葉があるのか・・・
ただリベンジ転職しても、またリベンジ転職しちゃうのよね、根本的にまちがっている理由がわからないと・・・
(一生リベンジ転職?)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

struts2のstruts.xmlを書かない方式で「はまった」こと・・・あれこれPart2

2015-09-17 16:20:22 | JavaとWeb
Struts2ネタを続けます・・・

2年前

struts2のstruts.xmlを書かない方式で「はまった」こと・・・あれこれ
http://blog.goo.ne.jp/xmldtp/e/b6905d8e6bd9aedfc47ec8c34b87455a

を書いたけど、最近やったら、さらにはまったんで、つけたし・・
(つけたしということで、前回4までだったから、今回は5から)




■はまった点5:そもそもstruts2-convention-plugin-2.3.15.1.jarがない

・現象
はまった点1で、struts2-convention-plugin-2.3.15.1.jarを使っているが、
そもそも、そのjarがない

・対応
ここにある
http://mvnrepository.com/artifact/org.apache.struts/struts2-convention-plugin/2.3.15.1




■はまった点6:Resultのアノテーションでlocationがでてこないでエラー

・現象
Resultのアノテーションでlocationがでてこないでエラーになり
valueとかをいれようとする

・理由
importしているものがちがっている

・対策

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

をインポートすること。




■はまった点7:Tomcatが立ち上がらない

・現象
たちあげようとすると、以下のエラー

9 17, 2015 3:42:34 午後 org.apache.catalina.core.StandardContext filterStart
重大: フィルタ struts2 の起動中の例外です
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerBuilder$4
File: ContainerBuilder.java
Method: create
Line: 132 - com/opensymphony/xwork2/inject/ContainerBuilder.java:132:-1
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:501)

(以下省略)

・理由
Jarのバージョンが違う(ふるい)

・対策
struts2-convention-plugin-2.3.15.1.jarをダウンロードして来いとあれほど・・・




■はまった点8:Tomcatが立ち上がらない part2
・現象
たちあげようとすると、以下のエラー

9 17, 2015 4:04:10 午後 org.apache.catalina.core.StandardContext filterStart
重大: フィルタ struts2 の起動中の例外です
Unable to load configuration. - bean - jar:file:/C:/Users/epson-w7/Desktop/pleiades-e4.3-ultimate-jre_20130926/pleiades/tomcat/7/webapps/test2/WEB-INF/lib/struts2-convention-plugin-2.3.16.jar!/struts-plugin.xml:30:137

(以下省略)

・理由
WEB-INFの下に(バージョン違いで)struts2-convention-pluginが2個以上いる

・対策
struts2-convention-pluginは1個にする
(実は、「struts2-convention-plugin-2.3.15.1.jarをダウンロードして来いとあれほど・・・」
言っていたが、2.3.15.1の必要はなく、2.3.16でもOK)




とりあえず、こんなところ

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Struts2でINPUTタグの値を読む方法(ServletRequestAwareの利用法)

2015-09-17 12:12:44 | JavaとWeb
JavaEEの話をしたあとで、Struts2っていうのも、なんなんですが、
Struts2のお話。

【課題】
Struts2で、sタグでなく、HTMLのINPUTタグで書いた値を読みたい
というときは、どうするか・・・

【何が問題?】
このとき、Struts2のActionを書くBeanに(s:で書くタグのように)
INPUTタグのnameと同じ名前の変数を書いても、そこには入ってこない
HTTPrequestの中に入っているので、そこからとってこないといけない
で、HTTPrequestをどうやってとってくるの?これが問題

【答え(の概要)】

・ServletRequestAwareをimplementsする
  →implementsするということは、必要なメソッドを定義しないといけない。
   この必要なメソッドがsetServletRequest()とgetServletRequest()
  →さらに、requestをクラスの属性として変数宣言しないといけない
  →必要なインポートもある

・getServletRequest().getParameter("INPUTのname名");で取り出せる


サンプルを以下に示します。




【サンプルのお題】

・はじめ、名前をいれて、開始数に何も入力しないと

 Hello World 名前 1回目 と表示される


・まったくおなじようにクリックすると

 前回訪問回数(今回は1回)に1足された回数が表示される


・開始数を設定すると

 開始数に1足された回数が表示される


【ソースコード】

・入力画面(初期表示画面)index.jsp
 s:textfieldタグで名前、inputタグで開始数を設定している
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<HEAD>
<TITLE>HelloTest</TITLE>
</HEAD>
<BODY>
    <s:form action="hello.action"  theme="simple">
         名前 :<s:textfield name="name"/><br/>
         開始数:<input type="text" name="start"/><br/>
         <br/>
         <s:submit type="button"  value="実行" />
    </s:form>
</BODY>
<html>


・結果表示画面 hello.jsp
セッションの中に入っているmsgを表示している

<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<HTML>
<HEAD>
<TITLE>足し算</TITLE>
</HEAD>
<BODY>
<s:property value="#session.msg"/>
<A HREF="index.jsp">戻る</A>
</BODY>
</HTML>


・設定ファイル web.xml
 は、ふつうのstruts2と変わらないので省略

・設定ファイル struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<package name="helloStruts2" namespace="/" extends="struts-default">
<action name="hello" class="gui.HelloAction">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>


・ソースコード gui.HelloAction.java
 セッションとリクエストの処理をしている。今回の御題リクエスト関係は、以下のとおり
(1)リクエストで使うものインポート
(2)リクエストの宣言
(3)リクエストで必要なアクセサ記述(setServletRequest()とgetServletRequest())
(4)リクエストパラメタでの取得
 具体的な内容は以下のソースとコメントを参照してください

package gui;

// セッションで使う
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;

//(1)リクエストで使うものインポート
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;

// 一般的に・・・
import com.opensymphony.xwork2.ActionSupport;

//==============================================//
// //
// Struts2 //
// セッション、リクエストのサンプル //
// //
//==============================================//
public class HelloAction extends ActionSupport implements SessionAware,ServletRequestAware{
private String name; // sタグの変数
private Map session; // セッションの宣言
private HttpServletRequest request; // (2)リクエストの宣言

// sタグで必要なアクセサ
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

// セッションで必要なアクセサ
public void setSession(Map session) {
this.session = session;
}

// (3)リクエストで必要なアクセサ記述
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

public HttpServletRequest getServletRequest() {
return this.request;
}

public String execute()
{
//======================================//
// 値の取得 //
//======================================//
// sタグのnameは、何もしなくても取得されている

// セッションでの取得
int kai;
String kaistr = (String)session.get("kaisu");
if ( kaistr == null)
{
kai = 0;
}
else
{
kai = Integer.parseInt(kaistr);
}

// (4)リクエストパラメタでの取得
String start = getServletRequest().getParameter("start");
if (start != null)
{
try
{
kai = Integer.parseInt(start);
}
catch(Exception e)
{
// 数字でなかったら、なにもしない
}
}


//======================================//
// 処理 //
//======================================//
kai++; // 今回の分を足す
String msg = "Hello World" + name + ":"+ kai+"回目";


//======================================//
// 出力 //
//======================================//
// セッション書き出し
session.put("kaisu", String.valueOf(kai));
session.put("msg", msg);

this.addActionMessage("成功1");
return SUCCESS;
}
}






  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「帰ってきたGlassFish Users Group Japan勉強会」に行ってきた!

2015-09-17 08:27:34 | JavaとWeb
昨日(9/16)、「帰ってきたGlassFish Users Group Japan勉強会」
に行ってきた。その内容をメモメモ




■JavaEEパフォーマンスTips 上妻(あげつま)さん
・自己紹介
・JavaEEのレイヤー毎の性能Tips
 プレゼンテーション:JSF
  古いmojarra(もはら)を使わない
   JSFタグが増えると遅くなる。4.1で修正
   5000タグで4秒ぐらい
     →Payaraは4.1ベースなのでで150ミリ秒

 ビジネスそう
  DIはEJBでなくCDIを使う
   EE6からCDI
   EE7からbeans.xmlなしでデフォルト有効化
   EE5マデハEJB間でのみDIが利用可
  EJBのループ呼出しによるオーバーヘッド
   万単位以上のループでオーバーヘッド
  CDIはほとんどオーバーヘッドない
  @Transactionalは正しくつけること
  @Asynchronous利用時はEJBスレッドプールに注意
    GlassFish:デフォルトだとスレッドループは16でとまる
    EJBコンテナのプロパティ
  JPAのexecuteBatch設定を忘れない
     JDBC利用時は意識する
     eclipselink、Hibernateもデフォルトバッチしていない
     eclipselink→persistence.xml

・まとめ
1.古いもはらはつかわない
2.DIはCDIを使う
3.EJBスレッドプール
4.executeBatch設定を忘れない

http://www.slideshare.net/agetsuma/java-ee-tips-glassfishjp




■JavaEE8先取り MVC1.0入門
・スライド60枚の発表用をglassfish_jpでつぶやいた

http://www.slideshare.net/masatoshitada7/java-ee-8mvc-10



・自己紹介
・MVC1.0とOzark(おざーく)
・注意点:これから仕様が変わる可能性
1)MVC1.0登場の背景とコンセプト
・Struts1のEOL
・JavaEEへの回帰
・JSF:コンポーネントベース→作り方おとなる
  →JAVAEE標準のアクション
・調査結果
  JSON-B
  セキュリティ
  キャッシュ
  インターセプター
  MVC
・MVC1.0 2015年3月にアーリードラフト
・JSFを否定するものではない(共存可能)
・MVCのコンセプト
  MVCアプリのコア
  JAX-RS上で動かす
  JSF,Faceletsをサポート
→JAX-RSを中心に既存のJavaEEテクノロジーを最大限に
ビュー
  JSP
コントローラー JAX-RSリソースクラス
モデルCDIビーン JPA

2)機能とサンプル
・参照実装Ozark
・下準備:Jax-RSの有効化
・CDI Beanによる値の受け渡し
・リダイレクト
・コントローラーメソッドの戻り値の型
  1)String
  2)Viewable:MVCで用意された
  3)Response:ステータスコードも返したい
  4)void+@View:あのテーションで指定
・バリデーション
  BindingResultに詰められる
・例外処理
  ExceptionMapper実装クラス
・サポートされるビュー技術
  JSP
  Facelets
・セキュリティ
   CSRF対策

3)実装されない機能
 ボタン2度押し→クライアントサイド
 今後期待
  バリデーショングループ
  認証認可 EE8

まとめ
・MVC1.0は
  EE8標準




■JavaEE on Heroku with Payara Micro
・自己紹介
・GlassFish使ってますか?
  WildFly,SpringBoot
・SoftwareDesignでGlassFishの文字が
・JavaEEでPaaS→気軽に試すならPaaS
・JavaEE on PaaS
  Gppgle App Engine CloudBees,Azure,Oracle Cloud,OpenShift・・・
・I loved RUN@cloud on CloudBees!
  →PaaS事業終了
・OpenShiftあたりがクレジットカード不要
・7月にSalesforceのイベントに参加 Herokuの話も
・HerokuのJavaサンプルはSpark(フレームワークのほうの)
・Payara:そもそもPayaraとは→ほぼそのままGlassFish
・Payara Micro
 java -jar payara-micro-4.1.153.jar --deploy target.war
 でデプロイまで
・蓮沼さんのエントリをよめばOK!
・Herokuアカウント作成(クレジットカードいらない)
・Java Get Start
・ポートをちゃんととる
さんぷる
http://arcane-retreat-2618.herokuapp.com/CongratulationsMakiMaki-1.0/
・日本におけるPayara周辺




■Life With Payara
蓮沼さん

Payara4.1.153あべいらぶる
http://payara.co/downloads
GlassFish:Oracle GlassFishの商用サポートやめる
→4.1はオープンソース版だけ
 いったん死んだ?
GlassFish復活2015
→一番初めに手を挙げたのがC2B2
  →GlassFishクローンを開発=Payara

GlassFishとPayara
・単純なフォークではない
・定期的リリース
・Github上
・本家にパッチ提供、本家からは1か月に1回
・4.1系=EE7 ふる対応
・JavaDB,OpenMQ
・L10Nサポート

アドバンテージ
・商用サポート:GlassFishもPayaraも
・Hazelcast(インメモリ)
・Payara Micro
・日本語訳のアップデート




■日本GlassFishUser会
事務連絡 「副会長の」蓮沼さん
岡崎会長や寺田さんが作った
規模縮小→忘年会サークル→ファンクラブ
勉強会の活発化
・寺田さんオラクル退職→支援してくれる人がいる
・活動メインは勉強会
・JCP公認JUGへの申請→今後の会長は蓮沼さん
・今後の運営について
DoorKeeperへの登録
   https://glassfish.doorkeeper.jp/
 Webサイトも時々チェック
   http://www.glassfish.jp

「新会長の」蓮沼さんからでした!

連絡事項
・ビジターカードを返すこと
・懇親会
・次回:目標年明け
・ご意見ご感想のアドレスは、http://www.glassfish.jpに載せる

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする