On Mar 11, 2008, at 10:19 AM, Burt Prior wrote:

Hi David,

Wow!  This is awesome news.  Very exciting.

Ok, we are ready to apply this patch to our 2.1.

Sorry to ask; could you be a bit more specific on what I need to do to apply
this patch?

If you grab the org.apache.openejb.core.Operation class from the latest snapshot[1] and put it into your openejb-core-3.0-beta-2.jar replacing the
existing Operation.class, things should work.

I'm not sure how to do this exactly.  Could I ask for your help?

Sure. You'll want to make sure your server is shutdown, then extract this jar into a clean temp directory:

repository/org/apache/openejb/openejb-core/3.0-beta-2/openejb- core-3.0-beta-2.jar

Then delete the file: org/apache/openejb/core/Operation.class

Now you want to grab the openejb-core-3.0-SNAPSHOT jar I pointed you at and extract it into it's own clean temp directory. Then move the 3.0-SNAPSHOT version of org/apache/openejb/core/Operation.class into the directory where the 3.0-beta-2 classes are extracted. Now you simply need to re-jar the contents of the extracted and updated 3.0- beta-2 temp directory then copy the new jar file over top of the openejb-core-3.0-beta-2.jar in your geronimo repository. Then go ahead and boot your server up.

Thanks again for your excellent work with our team and Gavin.

No problem, thanks for hanging in there. We appreciate it. Hopefully we can get a new release out with this fixed asap.

-David


David Blevins wrote:

Ok, I've been digging around in the TCK and chatting with Gavin offline.

Looks like this is an issue on our end after all.  I had originally
thought @Destroy mapped to @PreDestroy, which would definitely result
in the IllegalStateException, but @Remove is very different.  I've
done a check with the TCK to verify that relaxing the get/ setParameter
restriction in reference to @Remove is ok and things looked good, so
I've gone ahead and checked in that change.

Now, dealing with your existing build might be a bit trickier, but if
you're willing to crack open the openejb-core-3.0-beta-2.jar and patch
one class, we should be able to get things working for you.

Here was the change:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/Operation.java?r1=635766&r2=635767&pathrev=635767&view=patch

If you grab the org.apache.openejb.core.Operation class from the
latest snapshot[1] and put it into your openejb-core-3.0-beta-2.jar
replacing the existing Operation.class, things should work.

-David

[1]
http://people.apache.org/repo/m2-snapshot-repository/org/apache/openejb/openejb-core/3.0-SNAPSHOT/openejb-core-3.0-20080311.012606-8.jar


On Mar 10, 2008, at 10:31 AM, Burt Prior wrote:


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:@englearn- [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.






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



Reply via email to