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 >>>> [EMAIL PROTECTED] >>>> 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:@[EMAIL PROTECTED]: >>>>>> 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 <[EMAIL PROTECTED]> >>>>>>> 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.