2012年12月19日水曜日

RESTEasy を使ったバリデーション(続編)

この前ご紹介した、RESTEasy の Bean Validator を使ってみようと思ったら、こんなエラーが。orz


22:36:21,356 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/rest].[jp.vyw.rest.sample.SampleApplication]] (http--127.0.0.1-8080-1) サーブレット jp.vyw.rest.sample.SampleApplication のServlet.service()が例外を投げました: org.jboss.resteasy.spi.UnhandledException: javax.validation.ConstraintDeclarationException: Only the root method of an overridden method in an inheritance hierarchy may be annotated with parameter constraints, but there are parameter constraints defined at all of the following overridden methods: [MethodMetaData [method=public abstract void jp.vyw.rest.sample.api.ISample.insert(java.lang.String,java.lang.String), parameterMetaData=[ParameterMetaData [type=class java.lang.String], [index=0], name=arg0], constraints=[NotNull, Size], isCascading=false], ParameterMetaData [type=class java.lang.String], [index=1], name=arg1], constraints=[], isCascading=false]], constraints=[], isCascading=false, hasParameterConstraints=true], MethodMetaData [method=public void jp.vyw.rest.sample.api.ISample$$$view33.insert(java.lang.String,java.lang.String), parameterMetaData=[ParameterMetaData [type=class java.lang.String], [index=0], name=arg0], constraints=[NotNull, Size], isCascading=false], ParameterMetaData [type=class java.lang.String], [index=1], name=arg1], constraints=[], isCascading=false]], constraints=[], isCascading=false, hasParameterConstraints=true]]
        at org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:245) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:190) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:540) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.2.Final.jar:]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
        at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_24]
Caused by: javax.validation.ConstraintDeclarationException: Only the root method of an overridden method in an inheritance hierarchy may be annotated with parameter constraints, but there are parameter constraints defined at all of the following overridden methods: [MethodMetaData [method=public abstract void jp.vyw.rest.sample.api.ISample.insert(java.lang.String,java.lang.String), parameterMetaData=[ParameterMetaData [type=class java.lang.String], [index=0], name=arg0], constraints=[NotNull, Size], isCascading=false], ParameterMetaData [type=class java.lang.String], [index=1], name=arg1], constraints=[], isCascading=false]], constraints=[], isCascading=false, hasParameterConstraints=true], MethodMetaData [method=public void jp.vyw.rest.sample.api.ISample$$$view33.insert(java.lang.String,java.lang.String), parameterMetaData=[ParameterMetaData [type=class java.lang.String], [index=0], name=arg0], constraints=[NotNull, Size], isCascading=false], ParameterMetaData [type=class java.lang.String], [index=1], name=arg1], constraints=[], isCascading=false]], constraints=[], isCascading=false, hasParameterConstraints=true]]
        at org.hibernate.validator.metadata.AggregatedMethodMetaData$Builder.checkParameterConstraints(AggregatedMethodMetaData.java:222) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.hibernate.validator.metadata.AggregatedMethodMetaData$Builder.build(AggregatedMethodMetaData.java:161) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.hibernate.validator.metadata.BeanMetaDataImpl.buildMethodMetaData(BeanMetaDataImpl.java:391) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.hibernate.validator.metadata.BeanMetaDataImpl.<init>(BeanMetaDataImpl.java:286) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.hibernate.validator.metadata.BeanMetaDataImpl.<init>(BeanMetaDataImpl.java:163) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.hibernate.validator.engine.ValidatorImpl.getBeanMetaData(ValidatorImpl.java:1211) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:302) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:139) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final]
        at org.jboss.resteasy.plugins.validation.hibernate.HibernateValidatorAdapter.applyValidation(HibernateValidatorAdapter.java:39) [resteasy-hibernatevalidator-provider-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:150) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211) [resteasy-jaxrs-2.3.2.Final.jar:]
        at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) [resteasy-jaxrs-2.3.2.Final.jar:]
        ... 20 more
いやーん・・・・・。

詳しくまとまってるサイトを見つけたですが、関連は不明だけど、こんなことが書いてある。
To provide translations to other languages, one must create a new ValidationMessages_XX.properties file with the translated messages, where XX is the code of the language being provided.

Unfortunately Hibernate Validator provider doesn’t supports I18N based on a specific HTTP request. It does not take Accept-Language HTTP header into account and always uses the default Locale as provided by Locale.getDefault(). To be able to change the Locale using the Accept-Language HTTP header, a custom implementation must be provided.

んー、もうちょっと頑張ってみる。

2012年12月11日火曜日

JBoss AS7 ビルド

nekop さんが blog に書いてくれました。
http://d.hatena.ne.jp/nekop/touch/20121208/1355120881

2012年12月5日水曜日

JBoss Forge

不勉強でしたが、JBoss でもここまでできるようになったんですね。
Forge の普及で、Java EE 好感度が少しでもアップすることを願いますw
http://exitcondition.alrubinger.com/2012/10/01/con5458/

2012年12月4日火曜日

2012年11月2日金曜日

DeltaSpikeについて

最近自発的に情報を取りにいくのを怠っていたため、DeltaSpike について完全に追えていませんでした・・・・ので、なんとか追いつきたいと思いまする。

まずは、皆本師匠のブログを読んでます。

http://tanoseam.wordpress.com/2012/01/16/seam_next/
http://tanoseam.wordpress.com/2012/02/26/apache-deltaspike-0-1/
http://tanoseam.wordpress.com/2012/04/22/infoq/
http://tanoseam.wordpress.com/2012/04/28/apache-deltaspike-0-2/
http://tanoseam.wordpress.com/2012/05/03/deltaspike-exception-handling/
http://tanoseam.wordpress.com/2012/06/19/deltaspike-exception-handling-2/
http://tanoseam.wordpress.com/2012/08/25/apache-deltaspike-0-3/
http://tanoseam.wordpress.com/2012/09/26/seam2_javaee6/
http://tanoseam.wordpress.com/2012/10/15/abstractcontext-1/ 
http://tanoseam.wordpress.com/2012/10/21/abstractcontext-2/

最近、うちの会社で多い、コンバージョンの観点では難しいなぁ(例えば、例外処理とか)と思うところもありますが、スクラッチ開発する場合は是非使いたい^^
1.0リリースに期待。

2012年11月1日木曜日

JBoss AS 7.1.2 は出ないのかね?

7.1.2 でも、7.2 でもいいんだけど、コミュニティ版の新しいのが出ないですかね?
https://community.jboss.org/thread/197780
https://community.jboss.org/message/735207


ちなみに、ここから落としてみたら 7.2.0.Alpha1でした。

junnichi@nero:/usr/local/jboss/jboss-as-7.2.0.Alpha1-SNAPSHOT$ ./bin/standalone.sh
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /usr/local/jboss/jboss-as-7.2.0.Alpha1-SNAPSHOT

  JAVA: java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml

=========================================================================

17:24:28,740 INFO  [org.jboss.modules] (main) JBoss Modules version 1.1.3.GA
17:24:29,149 INFO  [org.jboss.msc] (main) JBoss MSC version 1.0.2.GA
17:24:29,284 INFO  [org.jboss.as] (MSC service thread 1-3) JBAS015899: JBoss AS 7.2.0.Alpha1-SNAPSHOT "Steropes" starting
17:24:31,484 INFO  [org.xnio] (MSC service thread 1-4) XNIO Version 3.0.7.GA
17:24:31,497 INFO  [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http)
17:24:31,536 INFO  [org.xnio.nio] (MSC service thread 1-4) XNIO NIO Implementation Version 3.0.7.GA
17:24:31,567 INFO  [org.jboss.remoting] (MSC service thread 1-4) JBoss Remoting version 3.2.12.GA
17:24:31,598 INFO  [org.jboss.as.configadmin] (ServerService Thread Pool -- 27) JBAS016200: Activating ConfigAdmin Subsystem
17:24:31,666 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 32) JBAS010280: Activating Infinispan subsystem.
17:24:31,798 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
17:24:31,808 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 40) JBAS011800: Activating Naming Subsystem
17:24:31,813 INFO  [org.jboss.as.connector.logging] (MSC service thread 1-3) JBAS010408: Starting JCA Subsystem (JBoss IronJacamar 1.0.12.Final)
17:24:31,848 INFO  [org.jboss.as.osgi] (ServerService Thread Pool -- 41) JBAS011906: Activating OSGi Subsystem
17:24:31,874 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 46) JBAS013171: Activating Security Subsystem
17:24:31,968 INFO  [org.jboss.as.security] (MSC service thread 1-2) JBAS013170: Current PicketBox version=4.0.13.Final
17:24:32,040 INFO  [org.jboss.as.naming] (MSC service thread 1-1) JBAS011802: Starting Naming Service
17:24:32,057 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 50) JBAS015537: Activating WebServices Extension
17:24:32,098 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-1) JBAS015400: Bound mail session [java:jboss/mail/Default]
17:24:32,569 INFO  [org.jboss.ws.common.management] (MSC service thread 1-1) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.1.0.CR1
17:24:32,882 INFO  [org.apache.catalina.connector] (MSC service thread 1-2) JBWEB001141: NIO 2 is not available, the java.io connector will be used insteaf
17:24:33,077 INFO  [org.apache.coyote.http11] (MSC service thread 1-2) JBWEB003001: Coyote HTTP/1.1 initializing on : http-/127.0.0.1:8080
17:24:33,156 INFO  [org.apache.coyote.http11] (MSC service thread 1-2) JBWEB003000: Coyote HTTP/1.1 starting on: http-/127.0.0.1:8080
17:24:33,569 INFO  [org.jboss.as.remoting] (MSC service thread 1-3) JBAS017100: Listening on 127.0.0.1:9999
17:24:33,570 INFO  [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on 127.0.0.1:4447
17:24:33,673 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-3) JBAS015012: Started FileSystemDeploymentService for directory /usr/local/jboss/jboss-as-7.2.0.Alpha1-SNAPSHOT/standalone/deployments
17:24:33,755 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
17:24:33,856 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
17:24:33,857 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
17:24:33,857 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss AS 7.2.0.Alpha1-SNAPSHOT "Steropes" started in 5857ms - Started 125 of 206 services (80 services are passive or on-demand)

RESTEasy を使ったバリデーション

久々の更新です。
少し落ち着いてきたので、コンスタントに更新するようにしたいと思います。

さて、RESTEasy ってバリデーション使えなくて不便なんだよねー。いつか実装されるのかなぁ?と思っていたら、2.3 から Bean Validator が使えるようになってました☆
 http://docs.jboss.org/resteasy/docs/2.3.5.Final/userguide/html/Validation.html

API だって当然バリデーションは必要ですよね。この機能が後回しにされた理由が不明ですが、実装されて良かった良かった。

2012年6月11日月曜日

タイヤチューブのリサイクル鞄

最近使ってたカジュアル鞄がお亡くなり気味だったので、新しいのを調達しました。

# 画像の縦横はその内直します><

で、たまたま目に留まって買ったのがこれ。ほんとにタイヤだw

結構タイヤって処分に困るけど、鞄とか他の物にリサイクルできるならチップに砕いて償却するよりは全然良いわけですね。
なるほど。

しかも、売上1%の寄付と、苗木1本の寄付をしていると。
なるほど。これいいかも。丈夫だし。

でも、2点ほど欠点がw
  1.  ゴム臭凄いw
  2. タイヤだから鞄自体がちょっと重いww



気に入るかわからないけど暫くメインで使ってみます。

2012年4月23日月曜日

Red Hat JBoss Data Grid

JBoss に、NoSQL 系のプラットフォームができる模様。
http://planet.jboss.org/view/post.seam?post=jboss_data_grid_when_database_is_very_expensive

元記事のタイトルがびみょーだ;;

2012年3月16日金曜日

Struts2 ConventionとTilesのJSP検索パス

これは酷い仕様・・・使えば使うほど、Struts2 嫌いになる・・・。
http://tbaba-prog.blogspot.com/2011/04/struts2-conventiontilesjsp_19.html

2012年3月2日金曜日

java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor

aopalliance.jar が足りない時に出るみたい。

2012年2月29日水曜日

JBoss AS 7.1 FAQ

木村さんがいつの間にか作っていたのを発見したので、貼っときます^^
https://community.jboss.org/wiki/JBossAS7FAQJapanese

山田さんが書いてるドキュメント和訳も発見したので、貼っときます^^
http://duke4j.wordpress.com/

Red Hat 廣川社長とご会食

ちょっと時間が経ってしましましたが、先週末に Red Hat さんに食事に招待されたので行って参りました。
去年の JBoss World の時の青木さんの武勇伝が面白かったです^^

記念撮影ということで写真撮っていただいたので、貼っておきたいと思います。





これからも、JBoss 頑張って参りたいと思います。

2012年2月20日月曜日

Windows 上の JBoss で WAR のアンデプロイができない

この地雷でハマり中・・・・ JBoss 再起動しないと WAR が消せない。非常に不便。Windiws 7 嫌いになりそう。
https://issues.jboss.org/browse/JBAS-8624?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#issue-tabs

2012年2月17日金曜日

2012年2月16日木曜日

EclEmma

暫く見ない内にレポートが綺麗になってました。
こちらのサイトが詳しいですね。
http://www.mitchy-world.jp/java/test/eclemma.htm

カバレッジ計測にどうぞ。

2012年2月14日火曜日

JBoss 5.1 で DefaultDS を PostgreSQL に変更

やなネタです。

JBoss の DefaultDS データソースを PostgreSQL に切り替える場合で、

$ cp /usr/local/jboss/jboss-5.1.0.GA/docs/examples/jms/postgresql-persistence-service.xml .

とかすると思うんですが、このままだとエラーが出ます;;

結論としては、クラスタリング利用無い場合は、以下4行をコメントアウトします。

      <depends optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>
      <attribute name="ControlChannelName">jbm-control</attribute>
      <attribute name="DataChannelName">jbm-data</attribute>
      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
やれやれです。

2012年2月8日水曜日

JDK6 で和暦

常識だと思われますが、JDK6 に和暦機能が実装されているという事実を今日初めて知りました;;
http://allabout.co.jp/gm/gc/80621/