作業メモ
今日の作業メモ。
・Employeeの一覧取得完了
・Employeeの詳細取得完了
・Employeeの更新着手
→データ更新は確認済
→バリデータ未実装
・備考
DBFluteでスキーマからファイルを生成するとき、Behaviorクラスは
AbstractBehaviorWritableを継承することが多いのだけど、
たまに、AbstractBehaviorReadableを継承することがある。
この場合、Lucyの場合、自動生成されるdbfluteBean.xmlに
setCommonColumnAutoSetupperの記述は不要になるので注意。
※そのままの場合、起動時にNoSuchMethodErrorが出て起動しない。
あと、lucy-extを使ってトランザクションをかけようと
メソッドに@RequiredTxをつけたら起動時にエラーになる。。。
これはまだ設定が足りないっぽいので要調査。
以下、lucy-config.xmlとエラーログ。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE lucy-config PUBLIC "-//LUCY//DTD LUCY//EN" "http://www.lucy.org/dtd/lucy-config.dtd"> <lucy-config> <include>"dbfluteBeans.xml"</include> <component name="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" instance="singleton"> <inject method="setXaDataSourceClassName">"org.h2.jdbcx.JdbcDataSource"</inject> <inject method="setUniqueResourceName">"jdbc/h2/xaDatasource"</inject> <inject method="setPoolSize">20</inject> <inject method="setBorrowConnectionTimeout">60</inject> <inject method="setXaProperties"><![CDATA[ p = dataSource.XaProperties; p["URL"]="jdbc:h2:tcp://127.0.0.1:9095/t2db"; p["User"]="sa"; p["Password"]=""; p; ]]></inject> <destroy method="close"/> </component> <component name="txMan" class="com.atomikos.icatch.jta.UserTransactionManager" instance="singleton"> <inject method="setForceShutdown">true</inject> <init method="init"/> <destroy method="close"/> </component> <component name="usrTx" class="com.atomikos.icatch.jta.UserTransactionImp" instance="singleton"> <inject method="setTransactionTimeout">300</inject> </component> <component name="txPro" class="org.t2framework.lucy.tx.JTATransactionProcesser" instance="singleton"> <inject method="setTxManager">txMan</inject> <inject method="setUserTx">usrTx</inject> </component> <!-- Service --> <component name="employee" class="org.t2framework.samples.todo.service.impl.EmployeeServiceImpl" instance="singleton" /> <!-- Page --> <component class="org.t2framework.samples.todo.page.EmployeePage" instance="request"> <inject method="inject">employee</inject> </component> </lucy-config>
2009/01/19 10:30:32 org.apache.catalina.core.StandardContext filterStart 致命的: フィルタ t2 の起動中の例外です javax.servlet.ServletException: javax.servlet.ServletException: java.lang.NullPointerException at org.t2framework.t2.filter.T2Filter.init(T2Filter.java:97) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: javax.servlet.ServletException: java.lang.NullPointerException at org.t2framework.t2.filter.Initializer.getContainerAdapterClass(Initializer.java:65) at org.t2framework.t2.filter.Initializer.execute(Initializer.java:41) at org.t2framework.t2.filter.T2Filter.init(T2Filter.java:86) ... 27 more Caused by: java.lang.NullPointerException at org.t2framework.commons.util.Reflections$ConstructorUtil.newInstance(Reflections.java:264) at org.t2framework.lucy.ConfigBinderFactory$DefaultConfigBinderImpl.createBehavior(ConfigBinderFactory.java:261) at org.t2framework.lucy.ConfigBinderFactory$DefaultConfigBinderImpl.createBehavior(ConfigBinderFactory.java:235) at org.t2framework.lucy.ConfigBinderFactory$DefaultConfigBinderImpl$3.bind(ConfigBinderFactory.java:198) at org.t2framework.lucy.ConfigBinderFactory$DefaultConfigBinderImpl$3.bind(ConfigBinderFactory.java:192) at org.t2framework.lucy.ConfigBinderFactory$DefaultConfigBinderImpl.bind(ConfigBinderFactory.java:229) at org.t2framework.lucy.ConfigBinderFactory$DefaultConfigBinderImpl.bind(ConfigBinderFactory.java:192) at org.t2framework.t2.configuration.T2LucyConfiguration$1.bind(T2LucyConfiguration.java:67) at org.t2framework.lucy.impl.LucyImpl.bind(LucyImpl.java:284) at org.t2framework.lucy.impl.LucyImpl.register(LucyImpl.java:276) at org.t2framework.lucy.config.stax.LucyConfigTagHandler.end(LucyConfigTagHandler.java:22) at org.t2framework.lucy.config.stax.StAXParser.parse(StAXParser.java:58) at org.t2framework.lucy.impl.XMLLucyComponentRegistrar.register(XMLLucyComponentRegistrar.java:32) at org.t2framework.lucy.impl.XMLLucyComponentRegistrar.register(XMLLucyComponentRegistrar.java:16) at org.t2framework.lucy.impl.LucyImpl.load(LucyImpl.java:369) at org.t2framework.lucy.LucyBootstrap.init(LucyBootstrap.java:81) at org.t2framework.t2.adapter.LucyContainerAdapter.init(LucyContainerAdapter.java:50) at org.t2framework.t2.filter.Initializer.getContainerAdapterClass(Initializer.java:63) ... 29 more
[追記]
web.xml
<?xml version="1.0"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>T2 Application Example</display-name> <context-param> <param-name>t2.encoding</param-name> <param-value>UTF-8</param-value> </context-param> <filter> <filter-name>uploadFilter</filter-name> <filter-class>org.t2framework.t2.filter.MultiPartRequestFilter </filter-class> <init-param> <param-name>uploadMaxSize</param-name> <param-value>100m</param-value> </init-param> <init-param> <param-name>uploadMaxFileSize</param-name> <param-value>100m</param-value> </init-param> <init-param> <param-name>uploadThresholdSize</param-name> <param-value>100k</param-value> </init-param> <init-param> <param-name>uploadRepositoryPath</param-name> <param-value>C:/temp/</param-value> </init-param> </filter> <filter> <filter-name>t2</filter-name> <filter-class>org.t2framework.t2.filter.T2Filter</filter-class> <init-param> <param-name>t2.rootpackage</param-name> <param-value>org.t2framework.samples.todo.page</param-value> </init-param> <init-param> <param-name>t2.config</param-name> <param-value>lucy-config.xml</param-value> </init-param> <init-param> <param-name>t2.container.adapter</param-name> <param-value>org.t2framework.t2.adapter.LucyContainerAdapter</param-value> </init-param> <init-param> <param-name>t2.eagerload</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>t2.exclude-resources</param-name> <param-value>css, js</param-value> </init-param> </filter> <filter-mapping> <filter-name>uploadFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>t2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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/pages/common.jsp</include-prelude> <!-- trim white spaces (JSP 2.1 or higher) <trim-directive-whitespaces>true</trim-directive-whitespaces> --> </jsp-property-group> </jsp-config> </web-app>