従業員をはじめ、お客様や弊社を支えてくれている皆様のお陰です。本当にありがとうございます。
弊社は6月決算ですので、準備期間も入れてようやく丁度半年になろうか、というところでまだまだまだまだ・・・ですが、今後とも邁進して参ります。
・作成日
・更新日
・論理削除フラグ
@Embeddable
public class Basis implements Serializable
{
@Column(nullable = false)
@NotNull
private Date entry = new Date();
@Column(nullable = false)
@NotNull
private Date modify = new Date();
@Column(nullable = false)
@NotNull
private Boolean del = false;
}
@Embedded
private Basis basis = new Basis();
@Version
private Integer version_no;
User(Entity)=> ユーザ(テーブル名称)
name(Entity)=> ユーザ名称(カラム名称)
@Entity
@Table(name="ユーザ")
public class User implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "ユーザ名称", nullable = false)
@NotNull
@Length(max = 20)
private String name;
@Column(name = "パスワード", nullable = false)
@NotNull
@Length(max = 10)
private String passwd;
}
A(1) -------------------> B(*)
@Entity
public class A implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Version
private Integer version;
@OneToMany(mappedBy = "a", cascade = CascadeType.REMOVE)
private Set<B> bs;
}
@Entity
public class B implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Version
private Integer version;
@ManyToOne(optional = false)
@NotNull
private A a;
}
CREATE TABLE A
(
id bigserial NOT NULL,
"version" integer,
CONSTRAINT a_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
CREATE TABLE B
(
id bigserial NOT NULL,
"version" integer,
a_id bigint NOT NULL,
CONSTRAINT b_pkey PRIMARY KEY (id),
CONSTRAINT fk26f4fb2dbc3ce1 FOREIGN KEY (a_id)
REFERENCES a (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
# sudo apt-get install php5 zend-framework php-pear proftpd postgresql php5-pgsql
include_path = ".:/usr/share/php:/usr/share/pear:/usr/share/php/libzend-framework-php/"
$ cat zf/.htaccess
RewriteEngine on
RewriteBase /zf/
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
$ cat index.php
<?php
require_once 'Zend/Version.php';
echo Zend_Version::VERSION;
?>
generate-parsers:
[javacc] Java Compiler Compiler Version 4.0 (Parser Generator)
[javacc] (type "javacc" with no arguments for help)
[javacc] Reading from file D:\usr\local\workspace\vyw\org\jbosssrc510\server\
output\parsers\org\jboss\ejb\plugins\cmp\ejbql\JBossQLParser.jj . . .
[javacc] Exception in thread "main" java.lang.Error: Invalid escape character
at line 1 column 64.
[javacc] at org.javacc.parser.JavaCharStream.readChar(Unknown Source)
[javacc] at org.javacc.parser.JavaCCParserTokenManager.getNextToken(Unkno
wn Source)
[javacc] at org.javacc.parser.JavaCCParser.jj_ntk(Unknown Source)
[javacc] at org.javacc.parser.JavaCCParser.javacc_options(Unknown Source)
[javacc] at org.javacc.parser.JavaCCParser.javacc_input(Unknown Source)
[javacc] at org.javacc.parser.Main.mainProgram(Unknown Source)
[javacc] at org.javacc.parser.Main.main(Unknown Source)
> gem install rubygems-update
> update_rubygems
> gem update
> gem install rails
> gem install sqlite3-ruby 窶錀-version ‘= 1.2.3′
> rails bookmark
> cd bookmark
> rake db:create:all
> ruby script/generate scaffold bookmark url:string
> rake db:migrate
> ruby script/server
@Stateless
@Name("authenticator")
public class AuthenticatorBean implements Authenticator {
@Logger
private Log log;
@In
Identity identity;
@In
Credentials credentials;
public boolean authenticate() {
log.info("authenticating {0}", credentials.getUsername());
//write your authentication logic here,
//return true if the authentication was
//successful, false otherwise
if ("admin".equals(credentials.getUsername())) {
identity.addRole("admin");
return true;
}
return false;
}
}
<security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/>
@Stateless: ステートレスセッションBeanであることを示します。ちなみに、SeamでステートレスセッションBeanを使うのは一般的にはログイン画面と(層を作りたい場合に)純粋なDAOを作るような場合くらいですかね。通常ステートフルセッションBeanを使うことになります。
@Logger: org.jboss.seam.log.Logのインスタンスを使います。これを書いておくと、Log4Jを使うときの非常に冗長なif文を書かなくてもSeamがよしなにしてくれることになっています。
@In: インジェクション。画面からの値をクラスの属性で受け取るのに使います。ログイン画面の例なので最初はしんどいかもしれませんが、logins.xhtmlと見比べれば分かると思います。
package com.mydomain.myproject.action;import com.mydomain.myproject.model.*;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;
import java.util.Arrays;@Name("myprojectList")
public class MyprojectList extends EntityQuery<Myproject> {private static final String EJBQL = "select myproject from Myproject myproject";private static final String[] RESTRICTIONS = {"lower(myproject.val) like lower(concat(#{myprojectList.myproject.val},'%'))",};private Myproject myproject = new Myproject();public MyprojectList() {
setEjbql(EJBQL);
setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
setMaxResults(25);
}public Myproject getMyproject() {
return myproject;
}
}
@Name: これはSeamアノテーションで、Seamコンポート名というのを指定します。とか書くと分からないのですが、ここで宣言した名前でJSFから直接呼び出せることになっています。要はその時のクラスのインスタンス名を書いてって事なので、普通はクラス名の先頭を小文字にしたのを書いとけば十分です。
package com.mydomain.myproject.model;
// Generated 2009/10/06 12:43:58 by Hibernate Tools 3.2.4.GA
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.validator.NotNull;
/**
* Myproject generated by hbm2java
*/
@Entity
@Table(name = "myproject", schema = "public")
public class Myproject implements java.io.Serializable {
private int id;
private String val;
public Myproject() {
}
public Myproject(int id, String val) {
this.id = id;
this.val = val;
}
@Id
@Column(name = "id", unique = true, nullable = false)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "val", nullable = false)
@NotNull
public String getVal() {
return this.val;
}
public void setVal(String val) {
this.val = val;
}
}
アノテーションを理解すれば何が書かれているかが何となくわかります。便利。
@Entity: 注釈されたクラスがEJB3のエンティティBeanであることを示します。
@Table: 注釈されたエンティティBeanがDB側のテーブルに関連付けられることを示します。ここでは、public.myprojectに対するエンティティBeanであるという宣言。省略したら「エンティティBeanのクラス名 = DBのテーブル名」と見なされます。
@Id: 注釈された属性がテーブルの主キーに関連付けられることを示します。基本的にはエンティティBeanに毎に1回しか使えません。また、エンティティBean毎に必ず一度利用しなければなりません。複数キーに対応する方法はありますが、複雑なので今は割愛します。特に理由が無ければ単一カラムで主キーを宣言しておいたほうが楽です。属性のゲッターに付与することもできます。
@Column: 注釈された属性がテーブルの項目に関連付けられることを示します。ここでは、属性idとpublic.myproject.idが関連付けられ、idはユニークで、NULLは許容されない、という意味です。省略したら「属性 = テーブルの項目名」と見なされますが、実際には、どのみちnullableを書かないといけないので都度都度宣言が必要です。属性のゲッターに付与することもできます。
@NotNull: 注釈された属性がNULL許容されないことを示します。これはJPAのアノテーションではないので、Hibernate環境でなければ使えませんが、SeamにはHibernateが同梱されているのでほかの環境に乗り換える予定が無ければ付けておきます。属性のゲッターに付与することもできます。
# echo "host all all 192.168.0.0/24 md5" >> /etc/postgresql/8.3/main/pg_hba.conf
# vi /etc/postgresql/8.3/main/postgresql.conf(下記の行を変更)
listen_addresses = '*'
# /etc/init.d/postgresql-8.3 restart
# psql myproject -Useam -hlocalhost
Password for user seam:
myproject=> create table myproject (id serial primary key, val text not null);
> seam setup settings:
[echo] JDBC URL: jdbc:postgresql://192.168.0.7:5432/myproject
> seam update
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<datasources>
<local-tx-datasource>
............(snip)............
<metadata>
<type-mapping>PostgreSQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
> seam generate-entities
> seam deploy
# apt-get install postgresql libpg-java
# su - postgres
$ createuser seam
$ createuser seam
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
$ createdb myproject
$ psql -l
$ psql template1
template1=# alter user seam password 'seamseamseam';
ALTER ROLE
template1=# \q
$ psql myproject -Useam -hlocalhost
$ exit
# cd /usr/local/jboss/jboss-5.1.0.GA/server/default/lib
# ln -s /usr/share/java/postgresql.jar
settings:
[echo] JBoss AS home: C:/usr/local/jboss/jboss-5.1.0.GA
[echo] GlassFish home: C:/Program Files/glassfish-v2.1
[echo] Project name: myproject
[echo] Project location: C:/Projects/myproject
[echo] Project type: ear
[echo] IceFaces: n
[echo] Action package: jp.vyw.myproject.action
[echo] Model package: jp.vyw.myproject.model
[echo] Test package: jp.vyw.myproject.test
[echo] JDBC driver class: org.postgresql.Driver
[echo] JDBC DataSource class: org.postgresql.jdbc3.Jdbc3ConnectionPool
[echo] Hibernate dialect: org.hibernate.dialect.PostgreSQLDialect
[echo] JDBC URL:ツꀀjdbc:postgresql://localhost:5432/myproject
[echo] Database username: seam
[echo] Database password: seamseamseam
settings:
[echo] JBoss AS home: C:/usr/local/jboss/jboss-5.1.0.GA
[echo] GlassFish home: C:/Program Files/glassfish-v2.1
[echo] Project name: myproject
[echo] Project location: C:/Projects/myproject
[echo] Project type: ear
[echo] IceFaces: n
[echo] Action package: com.mydomain.myproject.action
[echo] Model package: com.mydomain.myproject.model
[echo] Test package: jp.vyw.myproject.test
[echo] JDBC driver class: org.hsqldb.jdbcDriver
[echo] JDBC DataSource class: org.hsqldb.jdbc.jdbcDataSource
[echo] Hibernate dialect: org.hibernate.dialect.HSQLDialect
[echo] JDBC URL: jdbc:hsqldb:.
[echo] Database username: sa
[echo] Database password:
[echo] JBoss AS home: C:/usr/local/jboss/jboss-5.1.0.GA
[echo] GlassFish home: C:/Program Files/glassfish-v2.1
[echo] Project name: myproject
[echo] Project location: C:/Projects/myproject
[echo] Project type: ear
[echo] IceFaces: n
[echo] Action package: com.mydomain.myproject.action
[echo] Model package:ツꀀcom.mydomain.myproject.model
[echo] Test package:ツꀀcom.mydomain.myproject.test
[echo] JDBC driver class: org.hsqldb.jdbcDriver
[echo] JDBC DataSource class: org.hsqldb.jdbc.jdbcDataSource
[echo] Hibernate dialect: org.hibernate.dialect.HSQLDialect
[echo] JDBC URL: jdbc:hsqldb:.
[echo] Database username: sa
[echo] Database password:
リリースされたので早速アップグレードしました。
コピペできるようになったのは良いけど、、、、ボタン長押しで、iPodやSafariが終了しなくなってしまいました・・・・・常にメモリ不足な感じで結構重い。
http://plusd.itmedia.co.jp/mobile/articles/0906/18/news013.html
デザリングにかなり期待していたのですが、日本はやっぱりだめ。帯域細いからな・・・。
アップルにデザリングに関する記述があるから採用されるのだと思ってた・・・。
http://www.apple.com/jp/iphone/softwareupdate/
残念ですね。
やばい。完全に出遅れた。いつのまにかJBoss 5.1.0.GAがリリースされてる。
http://www.jboss.org/jbossas/docs/Release_Notes/510GA/readme.html
http://www.jboss.org/jbossas/
http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942&release_id=684683
というか、JBossASじゃなくてJBossなのね・・・。
しかも、EJB3もいつの間にか永遠のベータ版から脱却した模様。
あー、5.0自体余り見てなかったのに。また追いかけないと。焦
JBoss系で一覧新しい情報としては開発環境であるJBossToolsのメジャーバージョンアップですね。
http://in.relation.to/Bloggers/JBossTools3IsHere
日本語対応版がすでにありますので、こちらを使うのが手っ取り早いです。
http://sourceforge.jp/projects/japan-jbug/downloads/38753/InstallerForJBossTools-3.0.0.GA-R200903141626-H5-win32-0.0.16.jar
ただし、巨大なので要注意。