geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Burt Prior <bpr...@cisco.com>
Subject Re: Geronimo 2.1 and Seam
Date Mon, 10 Mar 2008 17:31:53 GMT

Hi David,

Gavin King just responded with an interesting comment about a possible
Geronimo/TCK bug and Seam:

http://seamframework.org/Community/Seam2JEE5CompliantWithTheTCKRequirements
http://seamframework.org/Community/Seam2JEE5CompliantWithTheTCKRequirements 

I was wondering if you had a moment, could you add your $0.02?  It appears
he and his team will be looking into this issue.

Thanks very much,
.Burt



djencks wrote:
> 
> I talked with david blevins about this a little more.  From the  
> evidence available so far we think that seam is not jee5 compliant  
> with the tck requirements.  If openejb did not throw this exception  
> in these circumstances it would fail the tck.  Recall that seam is  
> developed on a non-jee5-certified platform.  Under these  
> circumstances we'd have a hard time changing openejb to not throw the  
> exception. Do you have any evidence that seam runs with a bean with a  
> @Destroy annotated method on any certified platform?
> 
> On the other hand the requirement appears to be only in tck code and  
> not stated in the spec.  Also, it doesn't make much sense.  Thus it  
> might be worth pursuing a challenge to the tck.  I would think the  
> jboss/seam developers would be the ones to start this although we  
> might challenge it also.  The challenge process typically takes a while.
> 
> Seeing the entire stack trace from your bean's @Destroy method to the  
> original exception might possibly shed more light on the subject.
> 
> Other than filling up your logs what problems is this causing?  If it  
> does not cause functional problems perhaps pursuing a challenge would  
> be the best solution.
> 
> thanks
> david jencks
> 
> On Mar 7, 2008, at 10:06 AM, Burt Prior wrote:
> 
>>
>> Hi David,
>>
>> Thanks for the reply.  Our team really needs some help in solving  
>> this last
>> issue with Geronimo and Seam.  There must be some way to resolve this.
>>
>> As I exercise Seam's booking app, I monitor the Geronimo log very  
>> closely.
>> As I mentioned, the app works fine.  You can see the entities and ejb3
>> (stateful) session beans are found (jndi) and loaded correctly.   
>> The only
>> error we see is the one mentioned in my last post.
>>
>> The error is thrown, and the app continues on.
>>
>> Data is saved correctly in the DB, and the business logic in the  
>> session
>> beans are executed in the container fine.
>>
>> After closer inspection of the log, the error appears every time  
>> any session
>> bean is invoked, for example, 'BookingListAction' -> 'bookingList',
>> 'HotelSearchingAction' -> 'hostSearch'.   I've went over the source  
>> code for
>> these beans; they are simple and easy to understand, and I don't see
>> anything that would cause this error.
>>
>> What every session bean shares is the following method and annotation:
>>
>> ...
>> @Destroy @Remove
>> public void destroy() {}
>> ...
>>
>> I think this is related to the error, but I'm not sure.  I'm  
>> looking for
>> something to change in any bean code, but I don't see a thing.
>>
>> The Seam 'booking' example is important to our team to work with no  
>> errors
>> because this is exactly how we are building our current production  
>> app;
>> (Geronimo 2.1, Seam 2.1, JSF (facelets), EJB3 Session Beans, JPA  
>> Entities).
>>
>> And everything works, except for this error!
>>
>> It appears to us that any 'Seam app' running on Geronimo 2.1 would
>> experience this issue.
>>
>> Could we ask for you and your team's help to work with us in  
>> resolving this,
>> and how we can move forward?
>>
>> Thanks very much for your time and help,
>> .Burt
>>
>>
>>
>>
>> David Blevins wrote:
>>>
>>>
>>> On Mar 6, 2008, at 1:30 PM, Burt Prior wrote:
>>>
>>>> ...
>>>> 13:16:36,385 INFO  [OpenEJB] invoking method create on
>>>> jboss-seam.jar/EjbSynchronizations
>>>> 13:16:36,385 INFO  [OpenEJB] finished invoking method create
>>>> 13:16:36,495 INFO  [Transaction] TX Required: Started transaction
>>>> org.apache.geronimo.transaction.manager.TransactionImpl@13a6ecc
>>>> 13:16:36,495 ERROR [OpenEJB] The bean instance business method
>>>> encountered a
>>>> system exception: Callback methods cannot access parameters
>>>> java.lang.IllegalStateException: Callback methods cannot access
>>>> parameters
>>>> 	at
>>>> org
>>>> .apache
>>>> .openejb
>>>> .core
>>>> .interceptor
>>>> .ReflectionInvocationContext
>>>> .getParameters(ReflectionInvocationContext.java:71)
>>>> 	at
>>>> org
>>>> .jboss
>>>> .seam
>>>> .intercept
>>>> .EJBInvocationContext.getParameters(EJBInvocationContext.java:34)
>>>> 	at
>>>> org
>>>> .jboss
>>>> .seam
>>>> .intercept
>>>> .SeamInvocationContext.getParameters(SeamInvocationContext.java:49)
>>>> ...
>>>> 13:16:36,495 WARN  [Component] Exception calling component @Destroy
>>>> method:
>>>> hotelBooking
>>>> javax.ejb.EJBException: The bean encountered a non-application
>>>> exception.;
>>>> nested exception is:
>>>> 	java.lang.IllegalStateException: Callback methods cannot access
>>>> parameters
>>>> 	at
>>>> org
>>>> .apache
>>>> .openejb
>>>> .core
>>>> .ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:
>>>> 366)
>>>> 	at
>>>> org
>>>> .apache
>>>> .openejb
>>>> .core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:323)
>>>> 	at
>>>> org
>>>> .apache
>>>> .openejb
>>>> .util
>>>> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
>>>> 	at $Proxy77.destroy(Unknown Source)
>>>> ...
>>>>
>>>> I'm really stuck on this. Any idea's on how I can resolve this last
>>>> error?
>>>
>>> This it seems like some code is trying to call
>>> InvocationContext.getParameters() from inside a lifecycle method.
>>>
>>> I can't find a reference to this in the spec, but the TCK definitely
>>> says this must throw an IllegalStateException.
>>>
>>> -David
>>>
>>>> djencks wrote:
>>>>>
>>>>> I don't have oracle set up here which makes it hard to test much.
>>>>>
>>>>> Right now you have the persistence element in your geronimo plan  
>>>>> set
>>>>> up so that it's using the jdbc/ElvisPool configured later on in the
>>>>> same plan.  While it was my idea originally to introduce the "ext-
>>>>> module" stuff I now think its usually a bad idea.  In this case  
>>>>> there
>>>>> are no config-properties specified in the plan for the pool, so  
>>>>> it's
>>>>> not surprising that oracle can't figure out where the db is.
>>>>>
>>>>> From the end of your post it looks like you've set up a pool using
>>>>> the wizard.  I'd recommend using that one.  So
>>>>> - remove the entire ext-module section from your plan.
>>>>> -  Change the persistence element so the jta-datasource is whatever
>>>>> you named the datasource in the wizard-created pool.
>>>>> - Remove the oracle dependency from the plan and replace it with a
>>>>> dependency on the wizard-created pool.
>>>>> - I don't know if you'll need the non-jta-datasource.  I strongly
>>>>> recommend removing it until you find out you need it.  If  
>>>>> present, it
>>>>> absolutely needs to be a different datasource, with no-transaction
>>>>> configured.
>>>>>
>>>>> hope this helps
>>>>> david jencks
>>>>>
>>>>>
>>>>>
>>>>> On Mar 4, 2008, at 5:07 PM, Burt Prior wrote:
>>>>>
>>>>>>
>>>>>> Hi Jacek and David,
>>>>>>
>>>>>> Here is the stack trace of when I try to 'register' myself in the
>>>>>> booking
>>>>>> application:
>>>>>> <snip>
>>>>>> and here is my 'jboss-seam-jee5-geronimo-plan.xml':
>>>>>>
>>>>>> <?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>org.jboss.seam.examples.jee5</groupId>
>>>>>>      <artifactId>jboss-seam-jee5</artifactId>
>>>>>>      <version>2.1.0.A1</version>
>>>>>>      <type>ear</type>
>>>>>>    </moduleId>
>>>>>>    <dependencies>
>>>>>>      <dependency>
>>>>>>        <groupId>org.apache.geronimo.hibernate</groupId>
>>>>>>
>>>>>> <artifactId>geronimo-hibernate-transaction-manager-lookup</
>>>>>> artifactId>
>>>>>>        <type>jar</type>
>>>>>>      </dependency>
>>>>>>
>>>>>>       <!-- bprior added new dependency below per Jacek -->
>>>>>>       	<dependency>
>>>>>>         	<groupId>oracle</groupId>
>>>>>>         	<artifactId>jdbc</artifactId>
>>>>>>         	<version>10.2</version>
>>>>>>         	<type>jar</type>
>>>>>>       	</dependency>
>>>>>>       	
>>>>>>       <!--  bprior added new dependency below per david jencks
-->
>>>>>>
>>>>>>       <dependency>
>>>>>>        <groupId>concurrent</groupId>
>>>>>>        <artifactId>concurrent</artifactId>
>>>>>>        <type>jar</type>
>>>>>>      </dependency>	
>>>>>>
>>>>>>    </dependencies>
>>>>>>  </environment>
>>>>>>
>>>>>>  <module>
>>>>>>    <web>jboss-seam-jee5.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>org.jboss.seam.examples.jee5</groupId>
>>>>>>          <artifactId>jboss-seam-jee5</artifactId>
>>>>>>          <version>2.1.0.A1</version>
>>>>>>          <type>war</type>
>>>>>>        </moduleId>
>>>>>>      </environment>
>>>>>>      <context-root>/seam-jee5</context-root>
>>>>>>    </web-app>
>>>>>>  </module>
>>>>>>
>>>>>>  <module>
>>>>>>    <ejb>jboss-seam-jee5.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>org.jboss.seam.examples.jee5</groupId>
>>>>>>          <artifactId>jboss-seam-jee5</artifactId>
>>>>>>          <version>2.1.0.A1</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="bookingDatabase">
>>>>>>          <provider>org.hibernate.ejb.HibernatePersistence</

>>>>>> provider>
>>>>>>          <jta-data-source>jdbc/ElvisPool</jta-data-source>
>>>>>>          <non-jta-data-source>jdbc/ElvisPool</non-jta-data-source>
>>>>>>          <class>org.jboss.seam.example.booking.Booking</class>
>>>>>>          <class>org.jboss.seam.example.booking.Hotel</class>
>>>>>>          <class>org.jboss.seam.example.booking.User</class>
>>>>>>          <exclude-unlisted-classes>true</exclude-unlisted-classes>
>>>>>>
>>>>>>          <properties>
>>>>>>          	<property name="hibernate.dialect"
>>>>>> value="org.hibernate.dialect.OracleDialect"/>
>>>>>>            <property
>>>>>> name="hibernate.transaction.manager_lookup_class"
>>>>>>
>>>>>> value
>>>>>> ="org.apache.geronimo.hibernate.transaction.GeronimoTransactionMa
>>>>>> nagerLookup"
>>>>>> />
>>>>>>
>>>>>>         <property name="hibernate.hbm2ddl.auto" value="create-
>>>>>> drop"/>
>>>>>>         <property name="hibernate.show_sql" value="true"/>
>>>>>>         <property
>>>>>> name="hibernate.transaction.flush_before_completion"
>>>>>> value="true"/>
>>>>>>         <property name="hibernate.cache.provider_class"
>>>>>>              value="org.hibernate.cache.HashtableCacheProvider"/>
>>>>>>
>>>>>>          </properties>
>>>>>>
>>>>>>        </persistence-unit>
>>>>>>        <!-- change the way the default PU works - make it an alias
>>>>>> to
>>>>>> bookingDatabase PU -->
>>>>>>        <persistence-unit name="cmp">
>>>>>>          <class>org.jboss.seam.example.booking.Booking</class>
>>>>>>          <class>org.jboss.seam.example.booking.Hotel</class>
>>>>>>          <class>org.jboss.seam.example.booking.User</class>
>>>>>>          <exclude-unlisted-classes>true</exclude-unlisted-classes>
>>>>>>        </persistence-unit>
>>>>>>      </persistence>
>>>>>>
>>>>>>
>>>>>>    </openejb-jar>
>>>>>>  </module>
>>>>>>
>>>>>>  <ext-module>
>>>>>>    <connector>seam-jee5-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-oracle-local</ 
>>>>>> 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>org.jboss.seam.examples.jee5</groupId>
>>>>>>          <artifactId>booking-dbpool</artifactId>
>>>>>>          <version>2.1.0.A1</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/ElvisPool</name>
>>>>>>
>>>>>>              <!--
>>>>>>              <config-property-setting
>>>>>> name="UserName">ENGLRN_BPRIOR</config-property-setting>
>>>>>>              <config-property-setting
>>>>>> name="Password">BPRIOR</config-property-setting>
>>>>>>              <config-property-setting
>>>>>> name="Driver">oracle.jdbc.driver.OracleDriver</config-property-
>>>>>> setting>
>>>>>>              <config-property-setting
>>>>>> name="ConnectionURL">jdbc:oracle:thin:@englearn-app1@cisco.com:
>>>>>> 1521:xe</config-property-setting>
>>>>>>              -->
>>>>>>
>>>>>>              <!--  <config-property-setting
>>>>>> name="DatabaseName">SystemDatabase</config-property-setting>
-->
>>>>>>
>>>>>>              <connectionmanager>
>>>>>>                <local-transaction />
>>>>>>                <single-pool>
>>>>>>                  <max-size>8</max-size>
>>>>>>                  <min-size>4</min-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>
>>>>>>
>>>>>>
>>>>>> and here is my 'persistence.xml':
>>>>>>
>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <persistence xmlns="http://java.sun.com/xml/ns/persistence"
>>>>>>             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>>             xsi:schemaLocation="http://java.sun.com/xml/ns/
>>>>>> persistence
>>>>>> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
>>>>>>             version="1.0">
>>>>>>   <persistence-unit name="bookingDatabase">
>>>>>>      <provider>org.hibernate.ejb.HibernatePersistence</provider>
>>>>>>      <jta-data-source>ElvisPool</jta-data-source>
>>>>>>      <properties>
>>>>>>         <!-- The following two properties are for Glassfish -->
>>>>>>         <property name="hibernate.dialect"
>>>>>> value="org.hibernate.dialect.OracleDialect"/>
>>>>>>         <property  
>>>>>> name="hibernate.transaction.manager_lookup_class"
>>>>>>
>>>>>> value
>>>>>> ="org.apache.geronimo.hibernate.transaction.GeronimoTransactionMa
>>>>>> nagerLookup"/>
>>>>>>
>>>>>>
>>>>>>         <!-- The following three properties are OC4J -->
>>>>>>         <!--
>>>>>>         <property name="hibernate.dialect"
>>>>>>                   value="org.hibernate.dialect.HSQLDialect"/>
>>>>>>         <property name="hibernate.query.factory_class"
>>>>>>
>>>>>> value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/>
>>>>>>         <property  
>>>>>> name="hibernate.transaction.manager_lookup_class"
>>>>>>
>>>>>> value="org.hibernate.transaction.OrionTransactionManagerLookup"/>
>>>>>>         -->
>>>>>>
>>>>>>         <property name="hibernate.hbm2ddl.auto" value="create-
>>>>>> drop"/>
>>>>>>         <property name="hibernate.show_sql" value="true"/>
>>>>>>         <property
>>>>>> name="hibernate.transaction.flush_before_completion"
>>>>>> value="true"/>
>>>>>>         <property name="hibernate.cache.provider_class"
>>>>>>              value="org.hibernate.cache.HashtableCacheProvider"/>
>>>>>>      </properties>
>>>>>>   </persistence-unit>
>>>>>> </persistence>
>>>>>>
>>>>>>
>>>>>> I think the 'jta-data-source' is incorrect, but I've tried every
>>>>>> example I
>>>>>> could find with no luck.
>>>>>>
>>>>>> I have my Geronimo database pool configured correctly with the
>>>>>> usual Oracle
>>>>>> thin driver;
>>>>>>
>>>>>> <dependency>
>>>>>>   <groupId>console.dbpool</groupId>
>>>>>>    <artifactId>ElvisPool</artifactId>
>>>>>>    <version>1.0</version>
>>>>>>     <type>rar</type>
>>>>>> </dependency>
>>>>>>
>>>>>>
>>>>>> Could I ask for your help in this?  I'm just not able to  
>>>>>> connect to
>>>>>> the
>>>>>> geronimo's database pool, and I'm not sure why.
>>>>>>
>>>>>> Thanks again,
>>>>>> .Burt
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Jacek Laskowski wrote:
>>>>>>>
>>>>>>> On Mon, Mar 3, 2008 at 10:16 AM, Burt Prior <bprior@cisco.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> 'java.sql.SQLException - invalid oracle url specified:
>>>>>>>> OracleDataSource.makeURL'.
>>>>>>>
>>>>>>> Show the plan for the database pool and the entire stack  
>>>>>>> trace. If
>>>>>>> oracle thin driver class barfs it could mean that the url is
>>>>>>> incorrect
>>>>>>> which might be easy to fix. In the meantime write a sample jdbc
>>>>>>> program to connect to the database to make sure it can be  
>>>>>>> connected
>>>>>>> from outside.
>>>>>>>
>>>>>>> Jacek
>>>>>>>
>>>>>>> -- 
>>>>>>> Jacek Laskowski
>>>>>>> http://www.JacekLaskowski.pl
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> View this message in context: http://www.nabble.com/Geronimo-2.1-
>>>>>> and-Seam-tp15621154s134p15840865.html
>>>>>> Sent from the Apache Geronimo - Users mailing list archive at
>>>>>> Nabble.com.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> -- 
>>>> View this message in context:
>>>> http://www.nabble.com/Geronimo-2.1-and-Seam- 
>>>> tp15621154s134p15884374.html
>>>> Sent from the Apache Geronimo - Users mailing list archive at
>>>> Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>
>> -- 
>> View this message in context: http://www.nabble.com/Geronimo-2.1- 
>> and-Seam-tp15621154s134p15902126.html
>> Sent from the Apache Geronimo - Users mailing list archive at  
>> Nabble.com.
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Geronimo-2.1-and-Seam-tp15621154s134p15950560.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Mime
View raw message