I'm using TomEE 1.5.1 and attempted to configure a class loader enricher 
according to 
http://rmannibucau.wordpress.com/2012/09/23/add-the-same-jar-to-all-your-war-without-including-them-thanks-to-tomee/

Have reproduced the below error on server startup with no config changes to 
TomEE other than adding the enricher (tomee.xml attached)

INFO: Enterprise application "openejb" loaded.
04/01/2013 10:25:36 AM org.apache.openejb.assembler.classic.Assembler 
createRecipe
INFO: Creating Service(id=enricher)
04/01/2013 10:25:36 AM org.apache.openejb.util.OpenEJBErrorHandler 
handleUnknownError
SEVERE: FATAL ERROR: Unknown error in Assembler.  Please send the following 
stack trace and this message to users@openejb.apache.org :
org.apache.xbean.recipe.ConstructionException: Type class could not be found: 
org.apache.openejb.assembler.classic.AdditionalLibClassLoaderEnricherObserver
                at 
org.apache.xbean.recipe.ObjectRecipe.getType(ObjectRecipe.java:355)
                at 
org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:266)
                at 
org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
                at 
org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
                at 
org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
                at 
org.apache.openejb.assembler.classic.Assembler.createService(Assembler.java:1635)
                at 
org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:407)
                at 
org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:344)
                at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:144)
                at org.apache.openejb.OpenEJB.init(OpenEJB.java:290)
                at 
org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:233)
                at 
org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:130)
                at 
org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:121)
                at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
                at 
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
                at 
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
                at 
org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:633)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:658)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
                at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:616)
                at 
org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
                at 
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)

Thanks,

Sally MacFarlane

Application Engineer,
Enterprise Applications,
ICT Services,
University of Southern Queensland
+617 4631 2080


This email (including any attached files) is confidential and is for the
intended recipient(s) only.  If you received this email by mistake,
please, as a courtesy, tell the sender, then delete this email.

The views and opinions are the originator's and do not necessarily
reflect those of the University of Southern Queensland.  Although all
reasonable precautions were taken to ensure that this email contained no
viruses at the time it was sent we accept no liability for any losses
arising from its receipt.

The University of Southern Queensland is a registered provider of education
with the Australian Government.
(CRICOS Institution Code QLD 00244B / NSW 02225M, TEQSA PRV12081 )


<?xml version="1.0" encoding="UTF-8"?>
<tomee>


<Container id="My Singleton Container" type="SINGLETON">
  # Specifies the maximum time an invocation could wait for the
  # singleton bean instance to become available before giving up.
  #
  # After the timeout is reached a javax.ejb.ConcurrentAccessTimeoutException
  # will be thrown.
  #
  # Usable time units: nanoseconds, microsecons, milliseconds,
  # seconds, minutes, hours, days.  Or any combination such as
  # "1 hour and 27 minutes and 10 seconds"

  AccessTimeout = 30 seconds

</Container>


<Container id="My Stateful Container" type="STATEFUL">
  # Specifies the maximum time an invocation could wait for the
  # stateful bean instance to become available before giving up.
  #
  # After the timeout is reached a javax.ejb.ConcurrentAccessTimeoutException
  # will be thrown.
  #
  # Usable time units: nanoseconds, microsecons, milliseconds,
  # seconds, minutes, hours, days.  Or any combination such as
  # "1 hour and 27 minutes and 10 seconds"

  AccessTimeout = 30 seconds

  #  The passivator is responsible for writing beans to disk
  #  at passivation time. Different passivators can be used
  #  by setting this property to the fully qualified class name
  #  of the PassivationStrategy implementation. The passivator
  #  is not responsible for invoking any callbacks or other
  #  processing, its only responsibly is to write the bean state
  #  to disk.
  #
  #  Known implementations:
  #     org.apache.openejb.core.stateful.RAFPassivater
  #     org.apache.openejb.core.stateful.SimplePassivater

  Passivator   org.apache.openejb.core.stateful.SimplePassivater

  #  Specifies the time to wait between invocations. This
  #  value is measured in minutes. A value of 5 would
  #  result in a time-out of 5 minutes between invocations.
  #  A value of zero would mean no timeout.

  TimeOut  20

  # Specifies the frequency (in seconds) at which the bean cache is checked for
  # idle beans.

  Frequency 60

  #  Specifies the size of the bean pools for this
  #  stateful SessionBean container.

  Capacity  1000

  #  Property name that specifies the number of instances
  #  to passivate at one time when doing bulk passivation.
  #  Must be less than the PoolSize.

  BulkPassivate  100

</Container>


<Container id="My Stateless Container" type="STATELESS">

  # Specifies the time an invokation should wait for an instance
  # of the pool to become available.
  #
  # After the timeout is reached, if an instance in the pool cannot
  # be obtained, the method invocation will fail.
  #
  # Usable time units: nanoseconds, microsecons, milliseconds,
  # seconds, minutes, hours, days.  Or any combination such as
  # "1 hour and 27 minutes and 10 seconds"

  AccessTimeout = 30 seconds

  # Specifies the size of the bean pools for this stateless
  # SessionBean container.  If StrictPooling is not used, instances
  # will still be created beyond this number if there is demand, but
  # they will not be returned to the pool and instead will be
  # immediately destroyed.

  MaxSize = 10

  # Specifies the minimum number of bean instances that should be in
  # the pool for each bean.  Pools are prefilled to the minimum on
  # startup.  Note this will create start order dependencies between
  # other beans that also eagerly start, such as other @Stateless
  # beans with a minimum or @Singleton beans using @Startup.  The
  # @DependsOn annotation can be used to appropriately influence
  # start order.
  #
  # The minimum pool size is rigidly maintained.  Instances in the
  # minimum side of the pool are not eligible for IdleTimeout or
  # GarbageCollection, but are subject to MaxAge and flushing.
  #
  # If the pool is flushed it is immediately refilled to the minimum
  # size with MaxAgeOffset applied.  If an instance from the minimum
  # side of the pool reaches its MaxAge, it is also immediately
  # replaced.  Replacement is done in a background queue using the
  # number of threads specified by CallbackThreads.

  MinSize = 0

  # StrictPooling tells the container what to do when the pool
  # reaches it's maximum size and there are incoming requests that
  # need instances.
  #
  # With strict pooling, requests will have to wait for instances to
  # become available. The pool size will never grow beyond the the
  # set MaxSize value.  The maximum amount of time a request should
  # wait is specified via the AccessTimeout setting.
  #
  # Without strict pooling, the container will create temporary
  # instances to meet demand. The instances will last for just one
  # method invocation and then are removed.
  #
  # Setting StrictPooling to false and MaxSize to 0 will result in
  # no pooling. Instead instances will be created on demand and live
  # for exactly one method call before being removed.

  StrictPooling = true

  # Specifies the maximum time that an instance should live before
  # it should be retired and removed from use.  This will happen
  # gracefully.  Useful for situations where bean instances are
  # designed to hold potentially expensive resources such as memory
  # or file handles and need to be periodically cleared out.
  #
  # Usable time units: nanoseconds, microsecons, milliseconds,
  # seconds, minutes, hours, days.  Or any combination such as
  # "1 hour and 27 minutes and 10 seconds"

  MaxAge = 0 hours

  # Specifies the maximum time that an instance should be allowed to
  # sit idly in the pool without use before it should be retired and
  # removed.
  #
  # Usable time units: nanoseconds, microsecons, milliseconds,
  # seconds, minutes, hours, days.  Or any combination such as
  # "1 hour and 27 minutes and 10 seconds"

  IdleTimeout = 0 minutes

</Container>


<!--
# For more examples of database configuration see:
# http://openejb.apache.org/containers-and-resources.html
-->
<Service id="enricher" class-name="org.apache.openejb.assembler.classic.AdditionalLibClassLoaderEnricherObserver">
  path=/home/macfarla/usqsafe/tomee/additional-lib
</Service>

<Resource id="My DataSource" type="DataSource">
  JdbcDriver org.hsqldb.jdbcDriver
  JdbcUrl jdbc:hsqldb:file:data/hsqldb/hsqldb
  UserName sa
  Password
  JtaManaged true
</Resource>


<Resource id="My Unmanaged DataSource" type="DataSource">
  JdbcDriver org.hsqldb.jdbcDriver
  JdbcUrl jdbc:hsqldb:file:data/hsqldb/hsqldb
  UserName sa
  Password
  JtaManaged false
</Resource>


<!--
#
#  The <Deployments> element can be used to configure file
#  paths where OpenEJB should look for ejb jars or ear files.
#
#  See http://openejb.apache.org/3.0/deployments.html
#
#  The below entry is simply a default and can be changed or deleted
-->
<Deployments dir="apps/" />

</tomee>

Reply via email to