[JCA/JBoss] - Re: RAR - NOTYETINSTALLED error in JBOSS 4.0.4
by samprathis
Sorry, yes it is deployed as jmsinvoker.rar and the and when I create a service - jms-mq-ds.xml I get the following exception:
- MBeans waiting for other MBeans ---
ObjectName: jboss.jca:name=jca/sample,service=NoTxCM
State: CONFIGURED
I Depend On:
jboss.jca:name=jca/sample,service=ManagedConnectionPool
jboss.jca:service=CachedConnectionManager
Depends On Me:
jboss.jca:name=jca/sample,service=ConnectionFactoryBinding
ObjectName: jboss.jca:name=jca/sample,service=ManagedConnectionPool
State: CONFIGURED
I Depend On:
jboss.jca:name=jca/sample,service=ManagedConnectionFactory
Depends On Me:
jboss.jca:name=jca/sample,service=NoTxCM
ObjectName: jboss.jca:name=jca/sample,service=ManagedConnectionFactory
State: CONFIGURED
I Depend On:
jboss.jca:name='jmsinvoker.rar',service=RARDeployment
Depends On Me:
jboss.jca:name=jca/sample,service=ManagedConnectionPool
ObjectName: jboss.jca:name=jca/sample,service=ConnectionFactoryBinding
State: CONFIGURED
I Depend On:
jboss.jca:name=jca/sample,service=NoTxCM
--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.jca:name='jmsinvoker.rar',service=RARDeployment
State: NOTYETINSTALLED
Depends On Me:
jboss.jca:name=jca/sample,service=ManagedConnectionFactory
jms-mq-ds.xml entry is :
<connection-factories>
<no-tx-connection-factory>
<jndi-name>sample</jndi-name>
<rar-name>jmsinvoker.rar</rar-name>
<connection-definition>
javax.resource.cci.ConnectionFactory
</connection-definition>
<config-property name="queueConnectionFactoryName"
type="java.lang.String">jms/CCCQF</config-property>
<config-property name="requestQueueName"
type="java.lang.String">
jms/request
</config-property>
<config-property name="responseQueueName" type="java.lang.String">
jms/response
</config-property>
<config-property name="defaultExecutionTimeout" type="java.lang.Long">
60000
</config-property>
<config-property name="matchResponseMessageId" type="java.lang.Boolean">
false
</config-property>
</no-tx-connection-factory>
</connection-factories>
My ra.xml file contents are :
<!DOCTYPE connector PUBLIC '-//Sun Microsystems, Inc.//DTD Connector 1.0//EN' 'http://java.sun.com/dtd/connector_1_0.dtd'>
<display-name>JMSInvokeResourceAdapter</display-name>
<vendor-name>Sample</vendor-name>
<spec-version>1.0</spec-version>
<eis-type>JMS Service</eis-type>
1.0
<managedconnectionfactory-class>com.sample.JMSInvokeManagedConnectionFactory</managedconnectionfactory-class>
<connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
<connectionfactory-impl-class>com.sample.JMSInvokeConnectionFactory</connectionfactory-impl-class>
<connection-interface>javax.resource.cci.Connection</connection-interface>
<connection-impl-class>com.sample.JMSInvokeConnection</connection-impl-class>
<transaction-support>NoTransaction</transaction-support>
<config-property>
<config-property-name>queueConnectionFactoryName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>jms/QCF</config-property-value>
</config-property>
<config-property>
<config-property-name>requestQueueName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>jms/request</config-property-value>
</config-property>
<config-property>
<config-property-name>responseQueueName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>jms/response</config-property-value>
</config-property>
<config-property>
<config-property-name>defaultExecutionTimeout</config-property-name>
<config-property-type>java.lang.Long</config-property-type>
<config-property-value>60000</config-property-value>
</config-property>
<config-property>
<config-property-name>matchResponseMessageId</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<reauthentication-support>false</reauthentication-support>
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963122#3963122
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963122
19 years, 9 months
[JBoss Eclipse IDE (users)] - Re: MYSQL database connection within JBoss application(using
by tahirakramch
Hi
I am also have the problem of invoking bean from jsp page, how u do that if u have solved the problem, plz do share here....
and for ur issue this is not the problem of database, it is problem with the calling of managed bean from jsp
but how u solve tht???
exception
|
| javax.servlet.ServletException: Cannot get value for expression '#{pageBean.celsius}'
| javax.faces.webapp.FacesServlet.service(FacesServlet.java:121)
| org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
|
|
| root cause
|
| javax.faces.FacesException: Cannot get value for expression '#{pageBean.celsius}'
| org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:421)
| org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)
| org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352)
| javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
| org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
|
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963121#3963121
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963121
19 years, 9 months
[JBoss Seam] - Setting the pageflow dinamically when stating a conversation
by rlhr
Hello,
I have a use case that requires me to start different pageflow depending on the context.
One obvious solution is to define as many starting methods with the right annotation and call the according method
@Begin(pageflow = "flow1")
| public void startFlow1() {
| ...
| }
|
| @Begin(pageflow = "flow2")
| public void startFlow2() {
| ...
| }
|
That would be fine for just 2 pageflows. But if the number of pageflow grows, that could become a little annoying to have to write a new method each time. Also it is not really flexible and robust.
So I thought of the following solution:
@Begin
| public void start(String flowDefinitionName) {
| // whatever has to be done before starting the flow
| ...
|
| Pageflow.instance().begin(flowDefinitionName);
| }
|
In that case, the same method is always called and we just pass the right pageFllow definition.
It seems to work but I would like to know if someone sees anything wrong with this? Is there even a better wat of doing this?
Thanks
Richard
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963119#3963119
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963119
19 years, 9 months
[Persistence, JBoss/CMP, Hibernate, Database] - updating entity bean not updates field in database
by yura.kravchuk
The entity bean doesn't update field in database.
I have two entity beans OrgPersonnel and QualificationName. OrgPersonnel has field qualificationNameId (N:1 relation).
For these entity beans in jboss.xml file specified different container configurations. The OrgPersonnel bean's configuration is 'Instance Per Transaction CMP 2.x EntityBean'. The QualificationName bean's configuration is 'Standard CMP 2.x EntityBean with cache invalidation' but with commit-option 'D'.
When I am changing OrgPersonnel entity bean then changes affects all fields for corresponding record in database except qualificationNameId field, but it was changed. I examined the query that Jboss produced and found that field qualificationNameId missed in update.
I tried it on JBoss 4.0.3SP1, 4.0.4.GA
| 2006-08-04 11:35:34,851 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.OrgPersonnelEJB] Executing SQL:
| UPDATE org_personnels SET family_name=?, family_name_prefix=? WHERE org_personnel_id=?
|
I tried update other entities with similar configurations but all works properly.
If I use default configuration 'Standard CMP 2.x EntityBean' for OrgPersonnel entity bean then qualificationNameId field appears in update query and changes in database.
ejb-jar.xml
| <entity>
| <ejb-name>OrgPersonnelEJB</ejb-name>
| <local-home>com.usl.smash.data.orgPersonnel.LocalOrgPersonnelHome</local-home>
| <local>com.usl.smash.data.orgPersonnel.LocalOrgPersonnel</local>
| <ejb-class>com.usl.smash.data.orgPersonnel.OrgPersonnelBean</ejb-class>
| <persistence-type>Container</persistence-type>
| <prim-key-class>java.lang.Integer</prim-key-class>
| <reentrant>False</reentrant>
| <cmp-version>2.x</cmp-version>
| <abstract-schema-name>org_personnels</abstract-schema-name>
| <cmp-field>
| <field-name>orgPersonnelId</field-name>
| </cmp-field>
| <cmp-field>
| <field-name>number</field-name>
| </cmp-field>
| <cmp-field>
| <field-name>qualificationNameId</field-name>
| </cmp-field>
| <cmp-field>
| <field-name>organizationId</field-name>
| </cmp-field>
| <cmp-field>
| <field-name>familyName</field-name>
| </cmp-field>
| <cmp-field>
| <field-name>familyNamePrefix</field-name>
| </cmp-field>
| <primkey-field>orgPersonnelId</primkey-field>
| <query>
| <query-method>
| <method-name>ejbSelectGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <ejb-ql/>
| </query>
| <query>
| <query-method>
| <method-name>ejbSelectCountGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <ejb-ql/>
| </query>
| </entity>
|
| <entity>
| <ejb-name>QualificationNameEJB</ejb-name>
| <local-home>com.usl.smash.data.qualificationName.LocalQualificationNameHome</local-home>
| <local>com.usl.smash.data.qualificationName.LocalQualificationName</local>
| <ejb-class>com.usl.smash.data.qualificationName.QualificationNameBean</ejb-class>
| <persistence-type>Container</persistence-type>
| <prim-key-class>java.lang.Integer</prim-key-class>
| <reentrant>False</reentrant>
| <cmp-version>2.x</cmp-version>
| <abstract-schema-name>qualification_names</abstract-schema-name>
| <cmp-field>
| <field-name>qualificationNameId</field-name>
| </cmp-field>
| <cmp-field>
| <field-name>name</field-name>
| </cmp-field>
| <cmp-field>
| <field-name>standard</field-name>
| </cmp-field>
| <primkey-field>qualificationNameId</primkey-field>
| <query>
| <query-method>
| <method-name>ejbSelectGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <ejb-ql/>
| </query>
| <query>
| <query-method>
| <method-name>ejbSelectCountGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <ejb-ql/>
| </query>
| </entity>
|
| <ejb-relationship-role>
| <ejb-relationship-role-name>QualificationName-has-OrgPersonnels</ejb-relationship-role-name>
| <multiplicity>One</multiplicity>
| <relationship-role-source>
| <ejb-name>QualificationNameEJB</ejb-name>
| </relationship-role-source>
| <cmr-field>
| <cmr-field-name>orgPersonnels</cmr-field-name>
| <cmr-field-type>java.util.Collection</cmr-field-type>
| </cmr-field>
| </ejb-relationship-role>
| <ejb-relationship-role>
| <ejb-relationship-role-name>OrgPersonnel-is-QualificationName</ejb-relationship-role-name>
| <multiplicity>Many</multiplicity>
| <cascade-delete/>
| <relationship-role-source>
| <ejb-name>OrgPersonnelEJB</ejb-name>
| </relationship-role-source>
| <cmr-field>
| <cmr-field-name>qualificationName</cmr-field-name>
| </cmr-field>
| </ejb-relationship-role>
| </ejb-relation>
|
jbosscmp-jdbc.xml
| <entity>
| <ejb-name>OrgPersonnelEJB</ejb-name>
| <table-name>org_personnels</table-name>
| <cmp-field>
| <field-name>orgPersonnelId</field-name>
| <column-name>org_personnel_id</column-name>
| </cmp-field>
| <cmp-field>
| <field-name>qualificationNameId</field-name>
| <column-name>qualification_name_id</column-name>
| </cmp-field>
| <cmp-field>
| <field-name>familyNamePrefix</field-name>
| <column-name>family_name_prefix</column-name>
| </cmp-field>
| <cmp-field>
| <field-name>familyName</field-name>
| <column-name>family_name</column-name>
| </cmp-field>
| <cmp-field>
| <field-name>organizationId</field-name>
| <column-name>organization_id</column-name>
| </cmp-field>
| <query>
| <query-method>
| <method-name>ejbSelectGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <dynamic-ql/>
| </query>
| <query>
| <query-method>
| <method-name>ejbSelectCountGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <dynamic-ql/>
| </query>
| </entity>
|
|
| <entity>
| <ejb-name>QualificationNameEJB</ejb-name>
| <table-name>qualification_names</table-name>
| <cmp-field>
| <field-name>qualificationNameId</field-name>
| <column-name>qualification_name_id</column-name>
| </cmp-field>
| <query>
| <query-method>
| <method-name>ejbSelectGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <dynamic-ql/>
| </query>
| <query>
| <query-method>
| <method-name>ejbSelectCountGeneric</method-name>
| <method-params>
| <method-param>java.lang.String</method-param>
| <method-param>java.lang.Object[]</method-param>
| </method-params>
| </query-method>
| <dynamic-ql/>
| </query>
| </entity>
|
| <ejb-relation>
| <ejb-relation-name>QualificationName - OrgPersonnel</ejb-relation-name>
| <ejb-relationship-role>
| <ejb-relationship-role-name>QualificationName-has-OrgPersonnels</ejb-relationship-role-name>
| <key-fields>
| <key-field>
| <field-name>qualificationNameId</field-name>
| <column-name>qualification_name_id</column-name>
| </key-field>
| </key-fields>
| </ejb-relationship-role>
| <ejb-relationship-role>
| <ejb-relationship-role-name>OrgPersonnel-is-QualificationName</ejb-relationship-role-name>
| <key-fields/>
| </ejb-relationship-role>
| </ejb-relation>
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963118#3963118
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963118
19 years, 9 months
[Persistence, JBoss/CMP, Hibernate, Database] - Re: Custom ejbCreate() generates bad INSERT-Statement (4.0.2
by Oyabun
I found something in the EJB 2.0 spec 14.1.2
anonymous wrote : The Container must ensure that the values of the container-managed fields are set to the Java language
| defaults (e.g. 0 for integer, null for pointers) prior to invoking an ejbCreate(...) method on an
| instance.
I also have to correct my prior post. NUMBER-Columns are initialized with 0, while VARCHAR2-Columns with NULL. So the INSERT for my example:
ejbCreate("Alex", "m")
translates to
INSERT INTO PERSON(NAME, GENDER, AGE) VALUES ("Alex","m", 0)
Unfortunatly I couldn't find anything that manipulates the generated INSERT-Statements.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963114#3963114
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963114
19 years, 9 months
[Installation, Configuration & Deployment] - javax.naming.NameNotFoundException: remote not bound
by Renegade_xx
Hi!
I have a problem inconection with this error message.
I'm new in ejb3, and i've desided that i try to make the RUBiS (http://rubis.objectweb.org) project with enterprise beans in ejb3.
I have the following problem:
If there is the @PersistenceContext(unitName="rubis") annotation in the BrowseRegionBean.java, I get the following error messeage:
| 09:59:47,781 ERROR [STDERR] javax.naming.NameNotFoundException: remote not bound
| 09:59:47,781 ERROR [STDERR] at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
| 09:59:47,781 ERROR [STDERR] at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
| 09:59:47,781 ERROR [STDERR] at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
| 09:59:47,781 ERROR [STDERR] at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
| 09:59:47,781 ERROR [STDERR] at org.jnp.server.NamingServer.lookup(NamingServer.java:270)
| 09:59:47,781 ERROR [STDERR] at org.jnp.server.NamingServer.lookup(NamingServer.java:270)
| 09:59:47,781 ERROR [STDERR] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
| 09:59:47,781 ERROR [STDERR] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
| 09:59:47,781 ERROR [STDERR] at javax.naming.InitialContext.lookup(Unknown Source)
| 09:59:47,781 ERROR [STDERR] at org.apache.jsp.browseRegion_jsp.jspInit(org.apache.jsp.browseRegion_jsp:26)
| 09:59:47,781 ERROR [STDERR] at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:78)
| 09:59:47,781 ERROR [STDERR] at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:145)
| 09:59:47,781 ERROR [STDERR] at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
| 09:59:47,781 ERROR [STDERR] at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
| 09:59:47,781 ERROR [STDERR] at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
| 09:59:47,781 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| 09:59:47,781 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
| 09:59:47,781 ERROR [STDERR] at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54)
| 09:59:47,781 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:174)
| 09:59:47,781 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
| 09:59:47,781 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
| 09:59:47,781 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
| 09:59:47,781 ERROR [STDERR] at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
| 09:59:47,781 ERROR [STDERR] at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
| 09:59:47,781 ERROR [STDERR] at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
| 09:59:47,781 ERROR [STDERR] at java.lang.Thread.run(Unknown Source)
|
if i put it to comment, the javax.naming.NameNotFoundException is disappear, but in this case I get the following msg:
| 10:52:04,000 ERROR [STDERR] java.rmi.RemoteException: Failed to executeQuery java.lang.NullPointerException
| 10:52:04,000 ERROR [STDERR] at edu.rice.rubis.beans.Session.BrowseRegionBean.getRegions(BrowseRegionBean.java:47)
| ...
|
I know why I get the last message, bud I don't know how I can solve this problem
Please help me,
Thanks
there are the codes:
BrowseRegion.java
| @Remote
| public interface BrowseRegion {
| /**
| * Get all the regions from the database.
| *
| * @return a string that is the list of regions in html format
| * @since 1.1
| */
| public String getRegions() throws RemoteException;
| /**
| * Region related printed functions
| *
| * @param name the name of the region to display
| * @return a string in html format
| * @since 1.1
| */
| public String printRegion(String name) throws remoteException;
|
BrowseRegionBean.java
| public @Stateless class BrowseRegionBean implements BrowseRegion {
| @PersistenceContext(unitName="rubis")
| private EntityManager em;
| /**
| * Get all the regions.
| *
| * @return a string that is the list of regions in html format
| * @since 1.1
| */
| public String getRegions() throws RemoteException
| {
| Collection <Region> rs = null;
| StringBuffer html = new StringBuffer();
| try
| {
| rs = em.createQuery("from Region r").getResultList();
| }
| catch (Exception e)
| {
| throw new RemoteException("Failed to executeQuery " +e);
| }
| try
| {
| for (Iterator iter = rs.iterator(); iter.hasNext();)
| {
| Region r = (Region) iter.next();
| html.append(printRegion(r.getName()));
| }
| }
| catch (Exception e)
| {
| throw new RemoteException("Failed to get the list of regions" +e);
| }
| return html.toString();
| }
|
| /**
| * Region related printed functions
| *
| * @param name the name of the region to display
| * @return a string in html format
| * @since 1.1
| */
|
| public String printRegion(String name) throws RemoteException
| {
| return "<a href=\""+BeanConfig.context+"/browseCategories.jsp?type=regio"+"®ion="+URLEncoder.encode(name)+"\">"+name+"</a><br>\n";
| }
| }
|
browseRegion.jsp
| ...
| InitialContext ctx = new InitialContext();
| cal = (BrowseRegion) ctx.lookup(
| "RubisBeanEAR/BrowseRegionBean/remote");
| ...
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963113#3963113
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963113
19 years, 9 months