2013年2月10日日曜日

「Deploying GateIn to OpenShift」の間違い点


OpenShiftのJBossにGateInをデプロイして実行させた結果、起動できず。
で、調べてみた処、standalone.xmlの設定が間違っていたので、修正して、なんとか起動できた。
その報告を書いておく。
[参考ページ]
Deploying GateIn to OpenShift
https://community.jboss.org/wiki/DeployingGateInToOpenShift

間違っていた箇所は3箇所。
間違っていた箇所は4箇所。(20130520)
1つ目は、環境変数の指定。
2つ目は、TCPPINGのinitial_hostsプロパティの指定。
3つ目は、AUTHのauth_valueプロパティの指定。
4つ目は、.openshift/config/modules/org/jboss/as/webの作成とモジュールのコピー。(20130520)

1.環境変数の指定
参考ページによると、「standalone.xmlをダウンロードして、修正しろ」ってことだった。
で、そのstandalone.xmlは現状、こんな内容。
<system-properties>
 <property name="exo.conf.dir" value="/var/lib/stickshift/${USER_ID}/${APP_NAME}/jbossas-7/standalone/configuration/gatein" />
 <property name="gatein.conf.dir" value="/var/lib/stickshift/${USER_ID}/${APP_NAME}/jbossas-7/standalone/configuration/gatein" />
 <property name="exo.conf.dir.name" value="gatein" />
</system-properties>
この${USER_ID}を自分にユーザ名に変更しろってのはOK。
だが${APP_NAME}を"portal"に変更しろってのは間違い。
本当は"jbossas-7"に変更しなければいけない。
あと、パスの一部にある"stickshift"も間違いで、本当は"openshift"に変更しなければいけない。
よって、正しい内容は下記になる。
<system-properties>
 <property name="exo.conf.dir" value="/var/lib/openshift/ユーザー名/jbossas-7/jbossas-7/standalone/configuration/gatein" />
 <property name="gatein.conf.dir" value="/var/lib/openshift/ユーザー名/jbossas-7/jbossas-7/standalone/configuration/gatein" />
 <property name="exo.conf.dir.name" value="gatein" />
</system-properties>
(20130520)環境変数を使用した設定に変更。
<system-properties>
 <property name="exo.conf.dir" value="${env.JBOSS_HOME}/standalone/configuration/gatein" />
 <property name="gatein.conf.dir" value="${env.JBOSS_HOME}/standalone/configuration/gatein" />
 <property name="exo.conf.dir.name" value="gatein" />
</system-properties>


2.TCPPINGのinitial_hostsプロパティの指定。
ダウンロードしたstandalone.xmlは現状、こんな内容。
<protocol type="TCPPING">
<property name="timeout">3000</property>
<property name="initial_hosts">${env.OPENSHIFT_JBOSS_CLUSTER}</property>
<property name="port_range">0</property>
<property name="num_initial_members">1</property>
</protocol>
この${env.OPENSHIFT_JBOSS_CLUSTER}は間違いで、正しくは${env.OPENSHIFT_JBOSSAS_CLUSTER}。
よって、正しい内容は下記になる。
<protocol type="TCPPING">
 <property name="timeout">3000</property>
 <property name="initial_hosts">${env.OPENSHIFT_JBOSSAS_CLUSTER}</property>
 <property name="port_range">0</property>
 <property name="num_initial_members">1</property>
</protocol>

3.AUTHのauth_valueプロパティの指定
これも上記同様${env.OPENSHIFT_JBOSS_CLUSTER}は間違いで、正しくは${env.OPENSHIFT_JBOSSAS_CLUSTER}。
よって、正しい内容は下記になる。
<protocol type="AUTH">
 <property name="auth_class">org.jgroups.auth.MD5Token</property>
 <property name="token_hash">SHA</property>
 <property name="auth_value">${env.OPENSHIFT_JBOSSAS_CLUSTER}</property>
</protocol>

4..openshift/config/modules/org/jboss/as/webの作成とモジュールのコピー。
説明ページでは、
We also have to override org.jboss.as.web module, by adding a dependency into its modules.xml file. We just copy the whole patched-up module:
mkdir -p .openshift/config/modules/org/jboss/as/web
cp -r ../GateIn-3.2.0.Final-jbossas7-preview/modules/org/jboss/as/web .openshift/config/modules/org/jboss/as
とあるが、これは現在のOpenShiftバージョンでは不要

というか禁止
これやると起動できない。

その他にも、${env.OPENSHIFT_DB_HOST}:${env.OPENSHIFT_DB_PORT}など、修正が必要になる箇所が多数あるようす。
何せ、古いstandalone.xmlを使ってるもんだからね。

(20130520)今回使用したstandalone.xml
OpenShiftのデフォルトxmlに、GateInの設定を追加(したつもり)。
[standalone.xml]
<?xml version='1.0' encoding='UTF-8'?>

<server xmlns="urn:jboss:domain:1.1">

<extensions>
<extension module="org.jboss.as.clustering.infinispan" />
<extension module="org.jboss.as.clustering.jgroups" />
<extension module="org.jboss.as.cmp" />
<extension module="org.jboss.as.configadmin" />
<extension module="org.jboss.as.connector" />
<extension module="org.jboss.as.deployment-scanner" />
<extension module="org.jboss.as.ee" />
<extension module="org.jboss.as.ejb3" />
<extension module="org.jboss.as.jacorb" />
<extension module="org.jboss.as.jaxr" />
<extension module="org.jboss.as.jaxrs" />
<extension module="org.jboss.as.jdr" />
<extension module="org.jboss.as.jmx" />
<extension module="org.jboss.as.jpa" />
<extension module="org.jboss.as.jsr77" />
<extension module="org.jboss.as.logging" />
<extension module="org.jboss.as.mail" />
<extension module="org.jboss.as.messaging" />
<extension module="org.jboss.as.naming" />
<extension module="org.jboss.as.osgi" />
<extension module="org.jboss.as.pojo" />
<extension module="org.jboss.as.remoting" />
<extension module="org.jboss.as.sar" />
<extension module="org.jboss.as.security" />
<extension module="org.jboss.as.threads" />
<extension module="org.jboss.as.transactions" />
<extension module="org.jboss.as.web" />
<extension module="org.jboss.as.webservices" />
<extension module="org.jboss.as.weld" />
<extension module="org.gatein" />
</extensions>

<system-properties>
<property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION"
value="on" />
<property name="exo.conf.dir"
value="${env.JBOSS_HOME}/standalone/configuration/gatein" />
<property name="gatein.conf.dir"
value="${env.JBOSS_HOME}/standalone/configuration/gatein" />
<property name="exo.conf.dir.name" value="gatein" />
</system-properties>

<management>
<management-interfaces>
<native-interface>
<socket-binding native="management-native" />
</native-interface>
<http-interface>
<socket-binding http="management-http" />
</http-interface>
</management-interfaces>
</management>

<profile>
<subsystem xmlns="urn:jboss:domain:logging:1.1">
<!--console-handler name="CONSOLE"> <level name="INFO"/> <formatter> <pattern-formatter
pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> </console-handler -->
<periodic-rotating-file-handler name="FILE">
<formatter>
<pattern-formatter
pattern="%d{yyyy/MM/dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n" />
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log" />
<suffix value=".yyyy-MM-dd" />
<append value="true" />
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN" />
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN" />
</logger>
<logger category="sun.rmi">
<level name="WARN" />
</logger>
<logger category="jacorb">
<level name="WARN" />
</logger>
<logger category="jacorb.config">
<level name="ERROR" />
</logger>
<root-logger>
<level name="INFO" />
<handlers>
<!--handler name="CONSOLE"/ -->
<handler name="FILE" />
</handlers>
</root-logger>
</subsystem>
<subsystem xmlns="urn:jboss:domain:cmp:1.0" />
<subsystem xmlns="urn:jboss:domain:configadmin:1.0" />
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS"
enabled="true" use-java-context="true" pool-name="H2DS">
<connection-url>jdbc:h2:${jboss.server.data.dir}/test;DB_CLOSE_DELAY=-1
</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<datasource jndi-name="java:jboss/datasources/MysqlDS"
enabled="${mysql.enabled}" use-java-context="true" pool-name="MysqlDS"
use-ccm="true">
<connection-url>jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}
</connection-url>
<driver>mysql</driver>
<security>
<user-name>${env.OPENSHIFT_MYSQL_DB_USERNAME}</user-name>
<password>${env.OPENSHIFT_MYSQL_DB_PASSWORD}</password>
</security>
<validation>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<background-validation>true</background-validation>
</validation>
<pool>
<flush-strategy>IdleConnections</flush-strategy>
</pool>
</datasource>
<datasource jndi-name="java:jboss/datasources/PostgreSQLDS"
enabled="${postgresql.enabled}" use-java-context="true" pool-name="PostgreSQLDS"
use-ccm="true">
<connection-url>jdbc:postgresql://${env.OPENSHIFT_POSTGRESQL_DB_HOST}:${env.OPENSHIFT_POSTGRESQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}
</connection-url>
<driver>postgresql</driver>
<security>
<user-name>${env.OPENSHIFT_POSTGRESQL_DB_USERNAME}</user-name>
<password>${env.OPENSHIFT_POSTGRESQL_DB_PASSWORD}</password>
</security>
<validation>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<background-validation>true</background-validation>
</validation>
<pool>
<flush-strategy>IdleConnections</flush-strategy>
</pool>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource
</xa-datasource-class>
</driver>
<driver name="mysql" module="com.mysql.jdbc">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
</xa-datasource-class>
</driver>
<driver name="postgresql" module="org.postgresql.jdbc">
<xa-datasource-class>org.postgresql.xa.PGXADataSource
</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments"
relative-to="jboss.server.base.dir" scan-interval="5000"
deployment-timeout="300" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:ee:1.0" />
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool" />
</stateless>
<stateful default-access-timeout="5000" cache-ref="simple"
clustered-cache-ref="clustered" />
<singleton default-access-timeout="5000" />
</session-bean>
<mdb>
<resource-adapter-ref resource-adapter-name="hornetq-ra" />
<bean-instance-pool-ref pool-name="mdb-strict-max-pool" />
</mdb>
<pools>
<bean-instance-pools>
<strict-max-pool name="slsb-strict-max-pool"
max-pool-size="20" instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES" />
<strict-max-pool name="mdb-strict-max-pool"
max-pool-size="20" instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES" />
</bean-instance-pools>
</pools>
<caches>
<cache name="simple" aliases="NoPassivationCache" />
<cache name="passivating" passivation-store-ref="file"
aliases="SimpleStatefulCache" />
<cache name="clustered" passivation-store-ref="infinispan"
aliases="StatefulTreeCache" />
</caches>
<passivation-stores>
<file-passivation-store name="file" />
<cluster-passivation-store name="infinispan"
cache-container="ejb" />
</passivation-stores>
<async thread-pool-name="default" />
<timer-service thread-pool-name="default">
<data-store path="timer-service-data" relative-to="jboss.server.data.dir" />
</timer-service>
<remote connector-ref="remoting-connector" thread-pool-name="default" />
<thread-pools>
<thread-pool name="default">
<max-threads count="10" />
<keepalive-time time="100" unit="milliseconds" />
</thread-pool>
</thread-pools>
<!--iiop enable-by-default="false" use-qualified-name="false"/ -->
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:1.1"
default-cache-container="cluster">
<cache-container name="cluster" aliases="ha-partition"
default-cache="default">
<transport lock-timeout="60000" />
<replicated-cache name="default" mode="SYNC"
batching="true">
<locking isolation="REPEATABLE_READ" />
</replicated-cache>
</cache-container>
<cache-container name="web" aliases="standard-session-cache"
default-cache="repl">
<transport lock-timeout="60000" />
<replicated-cache name="repl" mode="ASYNC"
batching="true">
<file-store />
</replicated-cache>
<replicated-cache name="sso" mode="SYNC" batching="true" />
<distributed-cache name="dist" mode="ASYNC"
batching="true">
<file-store />
</distributed-cache>
</cache-container>
<cache-container name="ejb" aliases="sfsb sfsb-cache"
default-cache="repl">
<transport lock-timeout="60000" />
<replicated-cache name="repl" mode="ASYNC"
batching="true">
<eviction strategy="LRU" />
<file-store />
</replicated-cache>
<!-- Clustered cache used internally by EJB subsytem for managing the
client-mapping(s) of the socketbinding referenced by the EJB remoting connector -->
<replicated-cache name="remote-connector-client-mappings"
mode="SYNC" batching="true" />
<distributed-cache name="dist" mode="ASYNC"
batching="true">
<eviction strategy="LRU" />
<file-store />
</distributed-cache>
</cache-container>
<cache-container name="hibernate" default-cache="local-query">
<transport lock-timeout="60000" />
<local-cache name="local-query">
<transaction mode="NONE" />
<eviction strategy="LRU" max-entries="10000" />
<expiration max-idle="100000" />
</local-cache>
<invalidation-cache name="entity" mode="SYNC">
<transaction mode="NON_XA" />
<eviction strategy="LRU" max-entries="10000" />
<expiration max-idle="100000" />
</invalidation-cache>
<replicated-cache name="timestamps" mode="ASYNC">
<transaction mode="NONE" />
<eviction strategy="NONE" />
</replicated-cache>
</cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jacorb:1.1">
<orb>
<initializers transactions="spec" security="on" />
</orb>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxr:1.0">
<connection-factory jndi-name="java:jboss/jaxr/ConnectionFactory" />
<juddi-server publish-url="http://${env.OPENSHIFT_JBOSSAS_IP}:8080/juddi/publish"
query-url="http://${env.OPENSHIFT_JBOSSAS_IP}:8080/juddi/query" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0" />
<subsystem xmlns="urn:jboss:domain:jca:1.1">
<archive-validation enabled="true" fail-on-error="true"
fail-on-warn="false" />
<bean-validation enabled="false" />
<default-workmanager>
<short-running-threads>
<core-threads count="10" />
<queue-length count="10" />
<max-threads count="10" />
<keepalive-time time="10" unit="seconds" />
</short-running-threads>
<long-running-threads>
<core-threads count="10" />
<queue-length count="10" />
<max-threads count="10" />
<keepalive-time time="10" unit="seconds" />
</long-running-threads>
</default-workmanager>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jdr:1.0" />
<subsystem xmlns="urn:jboss:domain:jgroups:1.0"
default-stack="tcp">
<stack name="tcp">
<transport type="TCP" socket-binding="jgroups-tcp">
<property name="external_addr">${env.OPENSHIFT_GEAR_DNS}</property>
<property name="external_port">${env.OPENSHIFT_JBOSSAS_CLUSTER_PROXY_PORT}
</property>
<property name="bind_port">7600</property>
<property name="bind_addr">${env.OPENSHIFT_JBOSSAS_IP}</property>
<property name="defer_client_bind_addr">true</property>
</transport>
<protocol type="TCPPING">
<property name="timeout">30000</property>
<property name="initial_hosts">${env.OPENSHIFT_JBOSSAS_CLUSTER}</property>
<property name="port_range">0</property>
<property name="num_initial_members">1</property>
</protocol>
<protocol type="MERGE2" />
<protocol type="FD" />
<protocol type="VERIFY_SUSPECT" />
<protocol type="BARRIER" />
<protocol type="pbcast.NAKACK" />
<protocol type="UNICAST2" />
<protocol type="pbcast.STABLE" />
<protocol type="AUTH">
<property name="auth_class">org.jgroups.auth.MD5Token</property>
<property name="token_hash">SHA</property>
<property name="auth_value">${env.OPENSHIFT_APP_UUID}</property>
</protocol>
<protocol type="pbcast.GMS" />
<protocol type="UFC" />
<protocol type="MFC" />
<protocol type="FRAG2" />
<!--protocol type="pbcast.STATE_TRANSFER"/> <protocol type="pbcast.FLUSH"/ -->
</stack>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jmx:1.1">
<show-model value="true" />
<remoting-connector />
</subsystem>
<subsystem xmlns="urn:jboss:domain:jpa:1.0">
<jpa default-datasource="" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:jsr77:1.0" />
<subsystem xmlns="urn:jboss:domain:mail:1.0">
<mail-session jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp" />
</mail-session>
</subsystem>
<subsystem xmlns="urn:jboss:domain:messaging:1.1">
<hornetq-server>
<clustered>true</clustered>
<persistence-enabled>true</persistence-enabled>
<!--security-domain>messaging</security-domain -->
<security-enabled>false</security-enabled>
<journal-file-size>102400</journal-file-size>
<journal-min-files>2</journal-min-files>

<thread-pool-max-size>${messaging.thread.pool.max.size}
</thread-pool-max-size>
<scheduled-thread-pool-max-size>${messaging.scheduled.thread.pool.max.size}
</scheduled-thread-pool-max-size>

<connectors>
<netty-connector name="netty" socket-binding="messaging" />
<netty-connector name="netty-throughput"
socket-binding="messaging-throughput">
<param key="batch-delay" value="50" />
</netty-connector>
<in-vm-connector name="in-vm" server-id="0" />
</connectors>

<acceptors>
<netty-acceptor name="netty" socket-binding="messaging" />
<netty-acceptor name="netty-throughput"
socket-binding="messaging-throughput">
<param key="batch-delay" value="50" />
<param key="direct-deliver" value="false" />
</netty-acceptor>
<in-vm-acceptor name="in-vm" server-id="0" />
</acceptors>

<!--broadcast-groups> <broadcast-group name="bg-group1"> <group-address>231.7.7.7</group-address>
<group-port>9876</group-port> <broadcast-period>5000</broadcast-period> <connector-ref>
netty </connector-ref> </broadcast-group> </broadcast-groups> <discovery-groups>
<discovery-group name="dg-group1"> <group-address>231.7.7.7</group-address>
<group-port>9876</group-port> <refresh-timeout>10000</refresh-timeout> </discovery-group>
</discovery-groups> <cluster-connections> <cluster-connection name="my-cluster">
<address>jms</address> <connector-ref>netty</connector-ref> <discovery-group-ref
discovery-group-name="dg-group1"/> </cluster-connection> </cluster-connections -->

<!--security-settings> <security-setting match="#"> <permission type="send"
roles="guest"/> <permission type="consume" roles="guest"/> <permission type="createNonDurableQueue"
roles="guest"/> <permission type="deleteNonDurableQueue" roles="guest"/>
</security-setting> </security-settings -->

<address-settings>
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<message-counter-history-day-limit>10
</message-counter-history-day-limit>
<redistribution-delay>1000</redistribution-delay>
</address-setting>
</address-settings>

<jms-connection-factories>
<connection-factory name="InVmConnectionFactory">
<connectors>
<connector-ref connector-name="in-vm" />
</connectors>
<entries>
<entry name="java:/ConnectionFactory" />
</entries>
</connection-factory>
<connection-factory name="RemoteConnectionFactory">
<connectors>
<connector-ref connector-name="netty" />
</connectors>
<entries>
<entry name="RemoteConnectionFactory" />
<entry name="java:jboss/exported/jms/RemoteConnectionFactory" />
</entries>
</connection-factory>
<pooled-connection-factory name="hornetq-ra">
<transaction mode="xa" />
<connectors>
<connector-ref connector-name="in-vm" />
</connectors>
<entries>
<entry name="java:/JmsXA" />
</entries>
</pooled-connection-factory>
</jms-connection-factories>

<jms-destinations>
<jms-queue name="testQueue">
<entry name="queue/test" />
<entry name="java:jboss/exported/jms/queue/test" />
</jms-queue>
<jms-topic name="testTopic">
<entry name="topic/test" />
<entry name="java:jboss/exported/jms/topic/test" />
</jms-topic>
</jms-destinations>
</hornetq-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:naming:1.1" />
<subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="lazy">
<properties>
<!-- Specifies the beginning start level of the framework -->
<property name="org.osgi.framework.startlevel.beginning">1</property>
</properties>
<capabilities>
<!-- modules registered with the OSGi layer on startup -->
<capability name="javax.servlet.api:v25" />
<capability name="javax.transaction.api" />
<!-- bundles started in startlevel 1 -->
<capability name="org.apache.felix.log" startlevel="1" />
<capability name="org.jboss.osgi.logging" startlevel="1" />
<capability name="org.apache.felix.configadmin"
startlevel="1" />
<capability name="org.jboss.as.osgi.configadmin"
startlevel="1" />
</capabilities>
</subsystem>
<subsystem xmlns="urn:jboss:domain:pojo:1.0" />
<subsystem xmlns="urn:jboss:domain:remoting:1.1">
<connector name="remoting-connector" socket-binding="remoting" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0" />
<subsystem xmlns="urn:jboss:domain:sar:1.0" />
<subsystem xmlns="urn:jboss:domain:security:1.1">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="UsersRoles" flag="required" />
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required" />
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required" />
</authorization>
</security-domain>
<security-domain name="messaging" cache-type="default">
<authentication>
<login-module code="UsersRoles" flag="required">
<module-option name="usersProperties"
value="${jboss.server.config.dir}/application-users.properties" />
<module-option name="rolesProperties"
value="${jboss.server.config.dir}/application-roles.properties" />
</login-module>
</authentication>
</security-domain>
<security-domain name="gatein-domain" cache-type="default">
<authentication>
<login-module code="org.gatein.wci.security.WCILoginModule"
flag="optional">
<module-option name="portalContainerName" value="portal" />
<module-option name="realmName" value="gatein-domain" />
</login-module>
<login-module
code="org.exoplatform.services.security.jaas.SharedStateLoginModule"
flag="required">
<module-option name="portalContainerName" value="portal" />
<module-option name="realmName" value="gatein-domain" />
</login-module>
<login-module
code="org.exoplatform.services.security.j2ee.JbossLoginModule"
flag="required">
<module-option name="portalContainerName" value="portal" />
<module-option name="realmName" value="gatein-domain" />
</login-module>
</authentication>
</security-domain>
</security-domains>
</subsystem>
<subsystem xmlns="urn:jboss:domain:threads:1.1" />
<subsystem xmlns="urn:jboss:domain:transactions:1.1">
<core-environment>
<process-id>
<uuid />
</process-id>
</core-environment>
<recovery-environment socket-binding="txn-recovery-environment"
status-socket-binding="txn-status-manager" />
<coordinator-environment default-timeout="300" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:web:1.1"
default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http"
socket-binding="http" />
<virtual-server name="default-host"
enable-welcome-root="false">
<alias name="localhost" />
</virtual-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:webservices:1.1">
<modify-wsdl-address>true</modify-wsdl-address>
<wsdl-host>${env.OPENSHIFT_GEAR_DNS}</wsdl-host>
<wsdl-port>80</wsdl-port>
<endpoint-config name="Standard-Endpoint-Config" />
<endpoint-config name="Recording-Endpoint-Config">
<pre-handler-chain name="recording-handlers"
protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
<handler name="RecordingHandler"
class="org.jboss.ws.common.invocation.RecordingServerHandler" />
</pre-handler-chain>
</endpoint-config>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:1.0" />
<subsystem xmlns="urn:jboss:domain:gatein:1.0">
<deployment-archives>
<archive name="gatein.ear" main="true" />
</deployment-archives>
</subsystem>
</profile>

<interfaces>
<interface name="management">
<loopback-address value="${env.OPENSHIFT_JBOSSAS_IP}" />
</interface>
<interface name="public">
<loopback-address value="${env.OPENSHIFT_JBOSSAS_IP}" />
</interface>
<interface name="unsecure">
<!-- Used for IIOP sockets in the standarad configuration. To secure JacORB
you need to setup SSL -->
<loopback-address value="${env.OPENSHIFT_JBOSSAS_IP}" />
</interface>
</interfaces>

<socket-binding-group name="standard-sockets"
default-interface="public" port-offset="0">
<socket-binding name="http" port="8080" />
<socket-binding name="jacorb" interface="unsecure"
port="3528" />
<socket-binding name="jacorb-ssl" interface="unsecure"
port="3529" />
<socket-binding name="jgroups-tcp" port="7600" />
<socket-binding name="management-native" interface="management"
port="9999" />
<socket-binding name="management-http" interface="management"
port="9990" />
<socket-binding name="messaging" port="5445" />
<socket-binding name="messaging-throughput" port="5455" />
<socket-binding name="osgi-http" interface="management"
port="8090" />
<socket-binding name="remoting" port="4447" />
<socket-binding name="txn-recovery-environment" port="4712" />
<socket-binding name="txn-status-manager" port="4713" />
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25" />
</outbound-socket-binding>
</socket-binding-group>
</server>




2013年2月4日月曜日

Tomahawkの<t:jscookMenu>をJSF-RIで動作させる

JSF-RIでTomahawkのjscookmenuを使用した結果、何も反応無く動作しなかったので調べた結果…
どうやら数年前から抱えているバグだった。

で、その回避策が書かれていたので記録しておく。

参考ページ
action not working in t:navigationMenuItem
http://mail-archives.apache.org/mod_mbox/myfaces-users/200704.mbox/%3C9833177.post@talk.nabble.com%3E

Finally I got it working. I had to add this line in my JSP page.

<input type="hidden" name="jscook_action" />

But I have no idea why the above line is required !!

どうやらTomahawkが吐き出すスクリプトがバグってるようで、未だにそれが直ってない様子。
よって、フォームの中に<input type="hidden" name="jscook_action" />を入れて動いた。
その結果がこんな感じ。

<h:form>
<input type="hidden" name="jscook_action" />
<t:jscookMenu layout="hbr" theme="ThemeOffice">
<t:navigationMenuItem itemLabel="メニュー1" action="menu1" />
<t:navigationMenuItem itemLabel="メニュー2" action="menu2" />
</t:jscookMenu>
</h:form>

2013年2月3日日曜日

Tobagoのレイアウト設定

Tobagoのグリッドレイアウトを説明したドキュメント。
http://myfaces.apache.org/tobago/guide.html#Layout

Layout
レイアウト
Tobago organizes the placement of components with the help of layout managers.
Tobagoは、レイアウトマネージャの助けを借りて、コンポーネントの配置を整理します。
The main layout manager is called grid layout.
メインレイアウトマネージャは、グリッドレイアウトと呼ばれます。
It divides the available rectangular space into grid cells.
これは、グリッドのセルに使用可能な矩形領域を分割する。
The grid is spawned by the column and row values of the tag. 
グリッドは、タグの列と行の値によって生成されます。
The syntax of these values is based on the multi-length notation known from HTML.
これらの値の構文は、HTMLから知られているマルチレングス表記に基づいています。
To add a layout manager to a container like box, panel or page you have to add a layout facet (i.e. a facet with the name 'layout') to the respective container tag.
box, panelやpageのようなコンテナにレイアウトを追加するには、それぞれのコンテナにレイアウトファセットを追加する必要があります。
A code fragment from the address book example:
アドレスブックの例のコード·フラグメント:
<tc:panel>
  <f:facet name="layout">
    <tc:gridlayout columns="*" rows="fixed;fixed;*" />
  </f:facet>
  <tx:in label="First Name" />
  <tx:in label="Last Name" />
  <tc:cell />
</tc:panel>

In this example we place to two input controls with labels into two consecutive rows.
この例では、2つの連続した行にラベルを使用して2つの入力コントロールを配置します。
Below the two input fields we add a spacer element.
2つの入力フィールドの下にスペーサ要素を追加します。
The layout token 'fixed' advises the layout manager to give the input control the height, which this kind of control normally possesses in the selected theme.
レイアウト・トークン'fixed'は、レイアウトマネージャにインプット・コントロールの高さを与えるアドバイスを行い、この種のコントロールは通常選択されたテーマ中で処理されます。
The values of the column and row attributes of the tag can contain a semicolon separated list of layout tokens. 
タグのcolumnとrow属性の値は、セミコロン区切りでレイアウト・トークンのリストを含めることができます。
A layout token can be an exact length in pixels like 200px, a percentage length like 25%, a relative length like 2*, or a specific length called fixed, which's exact length is determined by the theme and make sure the control is usable -- a single-line input control for example needs to be so high that characters from the assigned font can be read inside the control.
レイアウト・トークンは「200px」のような ピクセルの正確な長さ、「25%」のようなパーセンテージ 、 「2*」のような相対的な 長さ、あるいは、「fixed」と呼ばれる特定の長さが可能です--たとえば、1行の入力コントロールは、割り当てられたフォント からのキャラクターがコントロール中に読まれることができるように高い必要があります。
Relative lengths are determined last by the layout manager.
相対的な長さは、レイアウトマネージャによって最後に決定されます。
The available remaining space is distributed among the existing relative lengths.
利用できる残りのスペースは、既存の相対的な長さに分配されます。
Each length receives space proportional to the integer before the '*'.
各々の長さは、「*」前の整数に比例したスペースを受けます。
A single '*' is a shorthand for '1*'.
一つの「*」は、「1*」の短縮形です。
The layout manager handles the rendered attribute of controls, too.
レイアウトマネージャは、コントロールのrendered属性も取り扱います。
If the rendered attribute is dynamically defined by a value binding, the page can contain fewer controls in some cases than in others.
rendered属性は動的にバリュー・バインディングによって定義されている場合、ページが他に比べていくつかのケースでは少ないコントロールを含めることができます。
The layout manager can then distribute the newly available space between the remaining relative and percentage lengths.
レイアウトマネージャは、その後、残りの相対的な割合と長との間に新たに利用可能なスペースを分配することができます。