Uruchomienie projektu seamowego w Eclipse Ganymede z JBoss Tools i Geronimo Eclipse Plugin
Z Jacek Laskowski - Wiki Projektanta Java EE
Tym razem rozpocznę tworzenie aplikacji seamowej z pomocą Eclipse Ganymede rozbudowanego o JBoss Tools - zestaw wtyczek eclipsowych wspierających tworzenie aplikacji z rozwiązaniami spod parasola JBoss. Wizyta na stonie domowej projektu JBoss Tools Project i "miłe" zaskoczenie, gdyż pierwsza wzmianka na stronie JBossTools 2.0.1.GA released! ( Posted on Mar 17, 2008 4:43:00 PM by Marshall) wskazuje na wersję 2.0.1.GA, podczas gdy niżej jest już informacja 06.06.2008: JBossTools 2.1.1.GA released! (to chyba jakiś zwyczaj w JBoss, gdzie na stronie domowej projektu wersje są zawsze wstecz - tak było przy JBoss Seam i teraz przy JBoss Tools) . Kilka dni po wydaniu nowej wersji projektu JBossTools 2.1.1.GA, więc idealna pora sprawdzić jego możliwości i zgłosić błędy.
Pobieram najnowszą wersję wtyczek JBossTools 2.1.1.GA dla Windows.
Zamiast pobierać paczkę można również skorzystać z aktualizacji z poziomu Eclipse przez podanie http://download.jboss.org/jbosstools/updates/stable jako strony z JBoss Tools.
Ja jednak pobieram paczkę i rozpakowuję w katalogu, który wskazuję przez plik link - korzystam ze sposobu rozszerzania Eclipse poprzez mechanizm Extension Locations, który opisywałem w Zarządzanie wtyczkami w Eclipse - Extension Location.
Uaktualniam przy okazji Eclipse IDE do wersji Eclipse Ganymede RC2 - pobieram Eclipse IDE for Java EE Developers (156 MB). Jest to analogiczna wersja do Eclipse 3.4M7. Jacek Pospychała pisał na grupie pl.comp.lang.java o konkursie Ganymede Around the World Contest, w którym wpisy na blogu o Eclipse Ganymede nagradzane są koszulką. Nie ma to jak upiec dwie pieczenie na jednym ogniu, gdzie tworząc aplikację seamową z JBoss Tools w Eclipse Ganymede można jeszcze "zarobić" koszulkę, albo kurtkę, a nawet wejściówkę na EclipseCon 2009 czy Eclipse Summit Europe 2008. Niby nic, a jednak. Zasady konkursu są opisane na wspomnianej stronie, a z najważniejszych punktów to:
- Write a blog post, create a screencast/video, or record a podcast telling the world what's great or what you dislike about Ganymede.
- Eclipse is a global community, so we encourage you to create a review in your native language.
- The deadline for submissions to the contest is July 31, 2008. The top 3 and best reviews will be selected by a panel of judges.
- The top 3 reviews will win an Eclipse jacket and the best entry will win their choice of a pass to EclipseCon 2009 or Eclipse Summit Europe 2008!
Po chwili mam kompletne środowisko do pracy z JBoss Seam 2.0.2 SP1: Eclipse Ganymede RC2 wersja Java EE z JBoss Tools 2.1.1.
Uruchamiam Eclipse. Wydaje mi się, że czas jego uruchomienia znacząco się skrócił w porównaniu z poprzednimi wersjami Eclipse. Eclipse pracuje z wtyczkami JBoss Tools, Maven Integration for Eclipse (m2eclipse) oraz Geronimo Eclipse Plugins.
Zgodnie z dokumentacją JBoss Seam - Chapter 3. Getting started with Seam, using JBoss Tools:
The Eclipse project will be automatically deployed to an exploded directory structure in JBoss AS as soon as you add the project using New -> Project... -> General -> Project -> Next, typing the Project name (helloworld in this case), and then clicking Finish.
I faktycznie - każda zmiana, wymusza przebudowanie projektu i zapisanie wersji dystrybucyjnej aplikacji w C:\Program Files\jboss-4.2.2.GA\server\default\deploy (ścieżkę wskazałem podczas wykonania seam setup, którą opisałem w artykule Pierwsze kroki z JBoss Seam i Apache Geronimo). Na wspomnianej stronie Chapter 3. Getting started with Seam, using JBoss Tools napisano:
JBoss Tools, as with seam-gen, works best with JBoss AS, but it's possible with a few tweaks to get your app running on other application servers. The changes are much like those described for seam-gen later in this reference manual.
Zatem wszystko przede mną, aby skorzystać z JBoss Seam, JBoss Tools i Apache Geronimo z pomocą wtyczki eclipsowej Geronimo Eclipse Plugin (GEP). Ostatnia wersja to GEP 2.1.1 mimo informacji na stronie o ostatniej wersji produkcyjnej 2.0.0 (czyżby to jakaś taktyka podawać poprzednie wersje produktów na stronie produktu?!). Skorzystam z GEP 2.1.0, która działa z Eclipse Ganymede M7.
Włączenie opcji Add JSF capabilities we wcześniej utworzonym projekcie seam_rozpoczynamy (opisanym w artykule Pierwsze kroki z JBoss Seam i Apache Geronimo) zakończyło się oznaczeniem projektu jako niepoprawnego z 12 błędami (!) W pliku components.xml (seam_rozpoczynamy/WEB-ROOT/WEB-INF/components.xml) znaduje się element <core:init debug="@debug@" jndi-pattern="@jndiPattern@"/>, w którym @debug@ jest oznaczony jako nierozpoznany - The value '@debug@' of attribute 'debug' on element 'core:init' is not valid with respect to its type, 'null', a dokładniej Value '@debug@' is not facet-valid with respect to enumeration '[true, false]'. It must be a value from the enumeration. Najwyraźniej podczas uruchomienia projektu można włączyć/wyłączyć śledzenie aplikacji seamowej. Zmienna ustawiana jest przez pliki build-dev.properties oraz build-prod.properties (oba znajdują się w katalogu głównym aplikacji), która aktywowane są przez skrypt antowy build.xml przez zmienną profile.
JBoss Tools dostarczają perspektywę Seam, w której wiele z widoków kończy swoją pracę z NCDFE (wyjątek NoClassDefFoundException). Najwyraźniej wersja Eclipse Ganymede M7 nie przystaje do wersji JBoss Tools.
Pierwsza zmiana w aplikacji seam_rozpoczynamy to ustawienie katalogu serwera aplikacji z podanego podczas seam setup na katalog Geronimo - plik build.properties w katalogu głównym aplikacji.
jboss.home = C\:/geronimo
oraz ustawienie zmiennej deploy.dir na katalog deploy w Geronimo (domyślnie zmienna ustawiona jest na ${jboss.home}/server/default/deploy).
Ostatecznie plik build.properties powinien zawierać następującą treść:
jboss.home = cokolwiek
geronimo.home = C\:/geronimo
deploy.dir = ${geronimo.home}/deploy
Uruchamiam Geronimo przez widok Servers, gdzie wcześniej przy pomocy wtyczki Geronimo Eclipse Plugin (GEP) zdefiniowałem Apache Geronimo 2.1.1 i sprawdzam rozmieszczenie aplikacji przy uruchomionym Geronimo. Należy upewnić się, że używana wersja Javy to maksymalnie 5.0 (Properties > Project Facets > Java). Istnieje również możliwość uruchomienia Geronimo za pomocą przycisku Start <nazwa serwera> na górnym panelu w Eclipse w perspektywie Seam.
Plik planu rozmieszczenia geronimo-application.xml umieszczam w katalogu resources/META-INF (przy zainstalowanej wtyczce GEP plik otrzymuje specjalną ikonkę Geronimo).
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-2.0">
<environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2">
<moduleId>
<groupId>pl.jaceklaskowski.seam</groupId>
<artifactId>seam_rozpoczynamy</artifactId>
<version>1.0</version>
<type>ear</type>
</moduleId>
<dependencies>
<dependency>
<groupId>org.apache.geronimo.hibernate.transaction</groupId>
<artifactId>geronimo-hibernate-transaction-manager-lookup</artifactId>
<type>jar</type>
</dependency>
</dependencies>
</environment>
<module>
<web>seam_rozpoczynamy.war</web>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1">
<environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2">
<moduleId>
<groupId>pl.jaceklaskowski.seam</groupId>
<artifactId>seam_rozpoczynamy</artifactId>
<version>1.0</version>
<type>war</type>
</moduleId>
</environment>
<context-root>/seam_rozpoczynamy</context-root>
<security-realm-name>seam_rozpoczynamy-realm</security-realm-name>
<security>
<default-principal realm-name="seam_rozpoczynamy-realm">
<principal name="anonymous" class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" />
</default-principal>
<role-mappings>
<role role-name="admin">
<realm realm-name="seam_rozpoczynamy-realm">
<principal name="AdminGroup" class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" />
</realm>
<principal name="system" class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" />
</role>
</role-mappings>
</security>
</web-app>
</module>
<module>
<ejb>seam_rozpoczynamy.jar</ejb>
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
<environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2">
<moduleId>
<groupId>pl.jaceklaskowski.seam</groupId>
<artifactId>seam_rozpoczynamy</artifactId>
<version>1.0</version>
<type>jar</type>
</moduleId>
</environment>
<!-- overrides what's in the module's persistence.xml -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="seam_rozpoczynamy">
<jta-data-source>jdbc/seam_rozpoczynamyDatasource</jta-data-source>
<properties>
<property name="hibernate.transaction.manager_lookup_class" value="org.apache.geronimo.hibernate.transaction.GeronimoTransactionManagerLookup" />
<property name="jboss.entity.manager.factory.jndi.name" value="java:/seam_rozpoczynamyEntityManagerFactory" />
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>
</openejb-jar>
</module>
<ext-module>
<connector>seam_rozpoczynamy-dbpool</connector>
<external-path xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
<dep:groupId>org.tranql</dep:groupId>
<dep:artifactId>tranql-connector-derby-embed-xa</dep:artifactId>
<dep:type>rar</dep:type>
</external-path>
<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2">
<environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2">
<moduleId>
<groupId>pl.jaceklaskowski.seam</groupId>
<artifactId>seam_rozpoczynamy</artifactId>
<version>1.0</version>
<type>rar</type>
</moduleId>
<dependencies>
<dependency>
<groupId>org.apache.geronimo.configs</groupId>
<artifactId>system-database</artifactId>
<type>car</type>
</dependency>
</dependencies>
</environment>
<resourceadapter>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>javax.sql.DataSource</connectionfactory-interface>
<connectiondefinition-instance>
<name>jdbc/seam_rozpoczynamyDatasource</name>
<config-property-setting name="DatabaseName">SystemDatabase</config-property-setting>
<connectionmanager>
<local-transaction />
<single-pool>
<max-size>100</max-size>
<blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds>
<select-one-assume-match />
</single-pool>
</connectionmanager>
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
</connector>
</ext-module>
</application>
i zmieniam build.xml o dodanie tego pliku do wynikowej aplikacji w katalogu META-INF.
<copy todir="${ear.dir}/META-INF">
<fileset dir="${basedir}/resources/META-INF">
<include name="application.xml" />
<include name="jboss-app.xml" />
<include name="geronimo-application.xml" />
</fileset>
</copy>
Opcjonalnie można wyłączyć włączanie pliku jboss-app.xml do wynikowej aplikacji.
Po jakimś czasie pracy z mechanizmem automatycznego uruchamiania aplikacji może pojawić się błąd:
14:47:32,516 ERROR [FacesConfigurator] failed to configure class org.richfaces.renderkit.html.ListShuttleRenderer java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at org.apache.geronimo.kernel.classloader.JarFileClassLoader.access$200(JarFileClassLoader.java:52) at org.apache.geronimo.kernel.classloader.JarFileClassLoader$6.run(JarFileClassLoader.java:308)
I jako rozwiązanie można wskazać na dokumentację JBoss Seam, w której napisano (chociaż ten akurat błąd związany jest jedynie pośrednio z JBoss Seam, a bezpośrednio z samym Geronimo, który włącza i wyłącza klasy aplikacji i przepełnia stertę Javy) - Chapter 2. Getting started with Seam, using seam-gen. Jeszcze raz okazuje się, że warto czytać dokumentację, a znane problemy nie są dla nas problemem. Należy w konfiguracji serwera w Eclipse zmienić parametry konfiguracyjne (Run > Run Configurations... i wybrać odpowiednią konfigurację w kategorii Apache Geronimo) dodając "--veryverbose" do Program arguments oraz "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512" do sekcji VM arguments.
W tej konfiguracji uruchomienie seam_rozpoczynamy udaje się bez większych kłopotów. Najprawdopodobniej pojawią się również komunikaty w stylu:
16:36:02,563 INFO [DirectoryMonitor] At startup, found C:\geronimo\deploy\seam_rozpoczynamy.ear with deploy time 1212929201328 and file time 1212928085578 16:36:08,875 INFO [DirectoryHotDeployer] Deploying seam_rozpoczynamy-dev-ds.xml 16:36:09,094 ERROR [DirectoryHotDeployer] Unable to deploy: Cannot deploy the requested application module because no deployer is able to handle it. This can happen if you have omitted the J2EE deployment descriptor, disabled a deployer module, or if, for example, you are trying to deploy an EJB module on a minimal Geronimo server that does not have EJB support installed. (planFile=C:\geronimo\deploy\seam_rozpoczynamy-dev-ds.xml) org.apache.geronimo.common.DeploymentException: Cannot deploy the requested application module because no deployer is able to handle it. This can happen if you have omitted the J2EE deployment descriptor, disabled a deployer module, or if, for example, you are trying to deploy an EJB module on a minimal Geronimo server that does not have EJB support installed. (planFile=C:\geronimo\deploy\seam_rozpoczynamy-dev-ds.xml) at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:233) at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:133) 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:585) at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34) at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124) at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867) at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239) at org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:116) at org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(DistributeCommand.java:61) at java.lang.Thread.run(Thread.java:595) ... 16:37:26,219 INFO [DirectoryHotDeployer] Undeploying seam_rozpoczynamy-dev-ds.xml 16:37:26,938 ERROR [DirectoryHotDeployer] Unable to undeploy java.lang.NullPointerException at org.apache.geronimo.deployment.plugin.ConfigIDExtractor.identifyTargetModuleIDs(ConfigIDExtractor.java:174) at org.apache.geronimo.deployment.hot.DirectoryHotDeployer.fileRemoved(DirectoryHotDeployer.java:355) at org.apache.geronimo.deployment.hot.DirectoryMonitor.scanDirectory(DirectoryMonitor.java:325) at org.apache.geronimo.deployment.hot.DirectoryMonitor.run(DirectoryMonitor.java:216) at java.lang.Thread.run(Thread.java:595)
Z jakiś nieznanych mi powodów plik seam_rozpoczynamy-dev-ds.xml nie jest lubiany przez moduł automatycznego rozmieszczania aplikacji w Geronimo i stąd wyjątek NPE! (zgłosiłem jako GERONIMO-4110 NPE upon deployment of unrecognized xml file (seam-gen based application)).
Najszybszym rozwiązaniem jest wyłączenie kopiowania pliku seam_rozpoczynamy-dev-ds.xml do katalogu deploy w pliku build.xml, np. przez wyłączenie wykonania zadania datasource w zadaniu explode oraz deploy (zgłosiłem jako JBSEAM-3087 seam-gen generated build.xml file enforces jboss.home to be set).
Tym razem przeładowanie aplikacji nie kończy się jakimikolwiek błędami!
17:03:47,313 INFO [DirectoryHotDeployer] Redeploying seam_rozpoczynamy.ear
17:03:48,047 INFO [SessionFactoryImpl] closing
17:03:48,047 INFO [SchemaExport] Running hbm2ddl schema export
17:03:48,078 INFO [SchemaExport] exporting generated schema to database
17:03:48,078 INFO [SchemaExport] schema export complete
17:03:48,078 INFO [KernelContextGBean] unbound gbean
pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear?J2EEApplication=pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear,
JCAConnectionFactory=jdbc/seam_rozpoczynamyDatasource, JCAResource=seam_rozpoczynamy-dbpool,ResourceAdapter=seam_rozpoczynamy-dbpool,
ResourceAdapterModule=seam_rozpoczynamy-dbpool, j2eeType=JCAManagedConnectionFactory,name=jdbc/seam_rozpoczynamyDatasource at name
pl.jaceklaskowski.seam/seam_rozpoczynamy/JCAManagedConnectionFactory/jdbc/seam_rozpoczynamyDatasource
17:03:48,078 INFO [startup] Undeploying app: C:\geronimo\deploy\seam_rozpoczynamy.ear\seam_rozpoczynamy.jar
17:03:48,078 INFO [startup] Undeploying app: C:\geronimo\deploy\seam_rozpoczynamy.ear\jboss-seam.jar
17:03:50,657 INFO [DirectoryMonitor] Hot deployer notified that an artifact was removed: pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear
17:03:52,141 INFO [config] Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
17:03:52,141 INFO [config] Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
17:03:52,141 INFO [config] Configuring Service(id=Default BMP Container, type=Container, provider-id=Default BMP Container)
17:03:52,141 INFO [config] Configuring Service(id=Default CMP Container, type=Container, provider-id=Default CMP Container)
17:03:52,141 INFO [config] Configuring app: pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear
17:03:59,766 INFO [OpenEJB] Auto-deploying ejb TimerServiceDispatcher: EjbDeployment(deployment-id=jboss-seam.jar/TimerServiceDispatcher)
17:03:59,766 INFO [OpenEJB] Auto-deploying ejb EjbSynchronizations: EjbDeployment(deployment-id=jboss-seam.jar/EjbSynchronizations)
17:03:59,766 INFO [config] Loaded Module: pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear
17:04:02,328 INFO [KernelContextGBean] bound gbean
pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear?J2EEApplication=pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear,
JCAConnectionFactory=jdbc/seam_rozpoczynamyDatasource,JCAResource=seam_rozpoczynamy-dbpool,ResourceAdapter=seam_rozpoczynamy-dbpool,
ResourceAdapterModule=seam_rozpoczynamy-dbpool,j2eeType=JCAManagedConnectionFactory,name=jdbc/seam_rozpoczynamyDatasource at name
pl.jaceklaskowski.seam/seam_rozpoczynamy/JCAManagedConnectionFactory/jdbc/seam_rozpoczynamyDatasource
17:04:02,453 INFO [Version] Hibernate Annotations 3.3.0.GA
17:04:02,485 INFO [Environment] Hibernate 3.2.4.sp1
17:04:02,563 INFO [Environment] hibernate.properties not found
17:04:02,578 INFO [Environment] Bytecode provider name : cglib
17:04:02,578 INFO [Environment] using JDK 1.4 java.sql.Timestamp handling
17:04:02,844 INFO [Version] Hibernate EntityManager 3.3.1.GA
17:04:02,953 INFO [Ejb3Configuration] Processing PersistenceUnitInfo [
name: seam_rozpoczynamy
...]
17:04:03,422 INFO [ConnectionProviderFactory] Initializing connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
17:04:03,438 INFO [InjectedDataSourceConnectionProvider] Using provided datasource
17:04:03,438 INFO [SettingsFactory] RDBMS: Apache Derby, version: 10.2.2.0 - (485682)
17:04:03,438 INFO [SettingsFactory] JDBC driver: Apache Derby Embedded JDBC Driver, version: 10.2.2.0 - (485682)
17:04:03,500 INFO [Dialect] Using dialect: org.hibernate.dialect.HSQLDialect
17:04:03,657 INFO [TransactionFactoryFactory] Transaction strategy: org.hibernate.ejb.transaction.JoinableCMTTransactionFactory
17:04:03,657 INFO [TransactionManagerLookupFactory] instantiating TransactionManagerLookup:
org.apache.geronimo.hibernate.transaction.GeronimoTransactionManagerLookup
17:04:03,672 INFO [TransactionManagerLookupFactory] instantiated TransactionManagerLookup
17:04:03,672 INFO [SettingsFactory] Automatic flush during beforeCompletion(): disabled
17:04:03,672 INFO [SettingsFactory] Automatic session close at end of transaction: disabled
17:04:03,672 INFO [SettingsFactory] JDBC batch size: 15
17:04:03,672 INFO [SettingsFactory] JDBC batch updates for versioned data: disabled
17:04:03,672 INFO [SettingsFactory] Scrollable result sets: enabled
17:04:03,672 INFO [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
17:04:03,672 INFO [SettingsFactory] Connection release mode: auto
17:04:03,672 INFO [SettingsFactory] Default batch fetch size: 1
17:04:03,672 INFO [SettingsFactory] Generate SQL with comments: disabled
17:04:03,672 INFO [SettingsFactory] Order SQL updates by primary key: disabled
17:04:03,672 INFO [SettingsFactory] Order SQL inserts for batching: disabled
17:04:03,672 INFO [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
17:04:03,688 INFO [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
17:04:03,688 INFO [SettingsFactory] Query language substitutions: {}
17:04:03,688 INFO [SettingsFactory] JPA-QL strict compliance: enabled
17:04:03,688 INFO [SettingsFactory] Second-level cache: enabled
17:04:03,688 INFO [SettingsFactory] Query cache: disabled
17:04:03,688 INFO [SettingsFactory] Cache provider: org.hibernate.cache.NoCacheProvider
17:04:03,688 INFO [SettingsFactory] Optimize cache for minimal puts: disabled
17:04:03,688 INFO [SettingsFactory] Structured second-level cache entries: disabled
17:04:03,719 INFO [SettingsFactory] Echoing all SQL to stdout
17:04:03,719 INFO [SettingsFactory] Statistics: disabled
17:04:03,719 INFO [SettingsFactory] Deleted entity synthetic identifier rollback: disabled
17:04:03,719 INFO [SettingsFactory] Default entity-mode: pojo
17:04:03,719 INFO [SettingsFactory] Named query checking : enabled
17:04:03,797 INFO [SessionFactoryImpl] building session factory
17:04:03,797 INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
17:04:03,813 INFO [SchemaExport] Running hbm2ddl schema export
17:04:03,844 INFO [SchemaExport] exporting generated schema to database
17:04:03,844 INFO [SchemaExport] Executing import script: /import.sql
17:04:03,844 INFO [SchemaExport] schema export complete
17:04:03,860 INFO [startup] Assembling app: C:\geronimo\deploy\seam_rozpoczynamy.ear\seam_rozpoczynamy.jar
17:04:03,907 INFO [startup] Deployed Application(path=C:\geronimo\deploy\seam_rozpoczynamy.ear\seam_rozpoczynamy.jar)
17:04:03,907 INFO [startup] Assembling app: C:\geronimo\deploy\seam_rozpoczynamy.ear\jboss-seam.jar
17:04:03,953 INFO [startup] Jndi(name=TimerServiceDispatcherLocal) --> Ejb(deployment-id=jboss-seam.jar/TimerServiceDispatcher)
17:04:03,953 INFO [startup] Jndi(name=EjbSynchronizationsLocal) --> Ejb(deployment-id=jboss-seam.jar/EjbSynchronizations)
17:04:03,953 INFO [startup] Created Ejb(deployment-id=jboss-seam.jar/TimerServiceDispatcher, ejb-name=TimerServiceDispatcher, container=Default Stateless Container)
17:04:03,969 INFO [startup] Created Ejb(deployment-id=jboss-seam.jar/EjbSynchronizations, ejb-name=EjbSynchronizations, container=Default Stateful Container)
17:04:03,969 INFO [startup] Deployed Application(path=C:\geronimo\deploy\seam_rozpoczynamy.ear\jboss-seam.jar)
17:04:04,110 INFO [ServletContextListener] Welcome to Seam 2.0.2.SP1
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/international, package: org.jboss.seam.international, prefix: org.jboss.seam.international
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/security, package: org.jboss.seam.security, prefix: org.jboss.seam.security
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/persistence, package: org.jboss.seam.persistence, prefix: org.jboss.seam.persistence
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/remoting, package: org.jboss.seam.remoting, prefix: org.jboss.seam.remoting
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/core, package: org.jboss.seam.core, prefix: org.jboss.seam.core
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/captcha, package: org.jboss.seam.captcha, prefix: org.jboss.seam.captcha
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/async, package: org.jboss.seam.async, prefix: org.jboss.seam.async
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/drools, package: org.jboss.seam.drools, prefix: org.jboss.seam.drools
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/spring, package: org.jboss.seam.ioc.spring, prefix: org.jboss.seam.ioc.spring
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/pdf, package: org.jboss.seam.pdf, prefix:
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/mail, package: org.jboss.seam.mail, prefix: org.jboss.seam.mail
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/transaction, package: org.jboss.seam.transaction, prefix: org.jboss.seam.transaction
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/web, package: org.jboss.seam.web, prefix: org.jboss.seam.web
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/theme, package: org.jboss.seam.theme, prefix: org.jboss.seam.theme
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/navigation, package: org.jboss.seam.navigation, prefix: org.jboss.seam.navigation
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/bpm, package: org.jboss.seam.bpm, prefix: org.jboss.seam.bpm
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/framework, package: org.jboss.seam.framework, prefix: org.jboss.seam.core.framework
17:04:44,532 INFO [Initialization] Namespace: http://jboss.com/products/seam/jms, package: org.jboss.seam.jms, prefix: org.jboss.seam.jms
17:04:44,532 INFO [Initialization] reading /WEB-INF/components.xml
17:04:45,094 INFO [Initialization] reading
jar:file:/C:/geronimo/repository/pl/jaceklaskowski/seam/seam_rozpoczynamy/1.0/seam_rozpoczynamy-1.0.ear/jboss-seam.jar!/META-INF/components.xml
17:04:45,157 INFO [Initialization] reading jar:file:/C:/geronimo/repository/pl/jaceklaskowski/seam/seam_rozpoczynamy/1.0/seam_rozpoczynamy-1.0.ear/
seam_rozpoczynamy.war/WEB-INF/lib/jboss-seam-ioc.jar!/META-INF/components.xml
17:04:45,219 INFO [Initialization] reading jar:file:/C:/geronimo/repository/pl/jaceklaskowski/seam/seam_rozpoczynamy/1.0/seam_rozpoczynamy-1.0.ear/
seam_rozpoczynamy.war/WEB-INF/lib/jboss-seam-remoting.jar!/META-INF/components.xml
17:04:45,282 INFO [Initialization] reading jar:file:/C:/geronimo/repository/pl/jaceklaskowski/seam/seam_rozpoczynamy/1.0/seam_rozpoczynamy-1.0.ear/
seam_rozpoczynamy.war/WEB-INF/lib/jboss-seam-ui.jar!/META-INF/components.xml
17:04:45,375 INFO [Initialization] reading properties from: /seam.properties
17:04:45,563 INFO [Initialization] initializing Seam
17:04:45,672 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.security.entityPermissionChecker
17:04:45,688 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.web.isUserInRole
17:04:45,688 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.locale
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.bpm.businessProcess
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.web.parameters
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.manager
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.persistence.persistenceProvider
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.resourceLoader
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.transaction.synchronizations
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.web.userPrincipal
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.locale
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.expressions
17:04:45,703 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.security.identity
17:04:45,907 INFO [Component] Component: org.jboss.seam.core.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Init
17:04:46,016 INFO [Initialization] Installing components...
...
17:04:46,719 INFO [Contexts] starting up: org.jboss.seam.navigation.pages
17:04:46,797 INFO [Contexts] starting up: org.jboss.seam.ioc.spring.springELResolver
17:04:46,828 INFO [Contexts] starting up: org.jboss.seam.security.facesSecurityEvents
17:04:46,828 INFO [Initialization] done initializing Seam
17:04:46,891 INFO [MyfacesConfig] No context init parameter 'org.apache.myfaces.PRETTY_HTML' found, using default value true
17:04:46,891 INFO [MyfacesConfig] No context init parameter 'org.apache.myfaces.ALLOW_JAVASCRIPT' found, using default value true
17:04:46,891 INFO [MyfacesConfig] No context init parameter 'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using default value true
17:04:46,891 INFO [MyfacesConfig] No context init parameter 'org.apache.myfaces.RENDER_VIEWSTATE_ID' found, using default value true
17:04:46,891 INFO [MyfacesConfig] No context init parameter 'org.apache.myfaces.STRICT_XHTML_LINKS' found, using default value true
17:04:46,891 INFO [MyfacesConfig] No context init parameter 'org.apache.myfaces.CONFIG_REFRESH_PERIOD' found, using default value 2
17:04:46,891 INFO [MyfacesConfig] No context init parameter 'org.apache.myfaces.VIEWSTATE_JAVASCRIPT' found, using default value false
17:04:46,891 INFO [MyfacesConfig] Tomahawk jar not available. Autoscrolling, DetectJavascript, AddResourceClass and CheckExtensionsFilter are disabled now.
17:04:46,891 INFO [MyfacesConfig] Starting up Tomahawk on the MyFaces-JSF-Implementation
17:04:51,422 INFO [AbstractFacesInitializer] ServletContext
'C:\geronimo\repository\pl\jaceklaskowski\seam\seam_rozpoczynamy\1.0\seam_rozpoczynamy-1.0.ear\seam_rozpoczynamy.war\' initialized.
17:04:51,500 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.loggingFilter
17:04:51,500 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.ajax4jsfFilter
17:04:51,641 INFO [CacheManager] Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory
17:04:51,641 INFO [LRUMapCacheFactory] Creating LRUMap cache instance using parameters:
{org.richfaces.SKIN=blueSky, facelets.DEVELOPMENT=true, javax.faces.DEFAULT_SUFFIX=.xhtml}
17:04:51,641 INFO [LRUMapCacheFactory] Creating LRUMap cache instance of default capacity
17:04:51,797 INFO [CacheManager] Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory
17:04:51,797 INFO [LRUMapCacheFactory] Creating LRUMap cache instance using parameters:
{org.richfaces.SKIN=blueSky, facelets.DEVELOPMENT=true, javax.faces.DEFAULT_SUFFIX=.xhtml}
17:04:51,797 INFO [LRUMapCacheFactory] Creating LRUMap cache instance of default capacity
17:04:51,797 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.redirectFilter
17:04:51,797 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.exceptionFilter
17:04:51,797 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.multipartFilter
17:04:51,797 INFO [SeamFilter] Initializing filter: org.jboss.seam.debug.hotDeployFilter
17:04:51,907 INFO [DirectoryHotDeployer] Redeployed pl.jaceklaskowski.seam/seam_rozpoczynamy/1.0/ear
Zastanawiam się tylko, co takiego ważnego Seam robi po wyświetleniu linii INFO [ServletContextListener] Welcome to Seam 2.0.2.SP1, która do następnej trwa prawie połowę czasu całego uruchomienia aplikacji! Ma ktoś pomysł na przyspieszenie tego kroku?




