You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Vikrant Yagnick <Vi...@mastek.com> on 2009/10/05 11:28:18 UTC

RE: OpenEJB Startup Performance

Hi,

I did some further research on the time that OpenEJB takes to startup when the number of EJB's are large.
It seems the maximum time is taken during
JACCBuilder.build and JACCBuilder.install

I read up a little on JACC and the reason for the large time is that it goes through each EJB's, every method to build the PolicyContext object and permissions list.

I was wondering, if I could make my own JACC Provider that did not do all of this , as for my use-case we would not need to do permission checking(It can be totally permissive, i.e. allow anyone to access an EJB method).

Any tips, on how to make a JACC Provider and use it with OpenEJB would be really helpful.
Alternatively, if someone has made a quick and dirty dummy JACC Provider(even for testing), it would be great if they can share the source code for that.

Cheers,
Vikrant



-----Original Message-----
From: Quintin Beukes [mailto:quintin@skywalk.co.za]
Sent: Tuesday, September 08, 2009 8:21 PM
To: users@openejb.apache.org
Subject: Re: OpenEJB Startup Performance

When it pauses for those 30 seconds, is the last line printed the
"Assembling app" line?

Q

On Tue, Sep 8, 2009 at 4:34 PM, Vikrant Yagnick
<Vi...@mastek.com> wrote:
> Not sure if this email reached the lists, sending again.....
> -----Original Message-----
> From: Vikrant Yagnick
> Sent: Tuesday, September 08, 2009 7:45 PM
> To: Vikrant Yagnick; 'users@openejb.apache.org'
> Subject: RE: OpenEJB Startup Performance
>
> Sorry,
>
> Not sure if the mail-list allows attachments. I am attaching relevant sections (Highlighting things that seem to take time using ************) :
>
>
> 2009-09-08 19:29:53,319 - INFO  - openejb.home = D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF
> 2009-09-08 19:29:53,319 - INFO  - openejb.base = D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF
> 2009-09-08 19:29:53,896 - INFO  - Using 'openejb.validation.skip=false'
> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=My Unmanaged DataSource, type=Resource, provider-id=Default JDBC Database)
> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=My JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)
> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=EElixirDS, type=Resource, provider-id=Default JDBC Database)
> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=MAYBANSYS, type=Resource, provider-id=Default JDBC Database)
> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=My JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)
> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=My CMP Container, type=Container, provider-id=Default CMP Container)
> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My BMP Container, type=Container, provider-id=Default BMP Container)
> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My Stateful Container, type=Container, provider-id=Default Stateful Container)
> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My Stateless Container, type=Container, provider-id=Default Stateless Container)
> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My MDB Container , type=Container, provider-id=Default MDB Container)
> ************************2009-09-08 19:29:57,427 - INFO  - Configuring enterprise application: D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes
> ************************2009-09-08 19:30:22,748 - WARN  - WARN ... OccupationExtraEJB:  Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,748 - WARN  - WARN ... PremiumMasterEJB:    Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,748 - WARN  - WARN ... ProductBaseEJB:      Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,748 - WARN  - WARN ... ProductCombinationEJB:       Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,748 - WARN  - WARN ... RidersWaivedEJB:     Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... StatusEJB:   Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... CHMInterfaceEJB:     Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... ILinkPolicyEJB:      Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... PCG8DividendEJB:     Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... PCG8DividendEJB:     Unused ejbPostCreate method: ejbPostCreate(com.mastek.eElixir.finance.common.helper.PCG8Dividend)
> 2009-09-08 19:30:22,764 - WARN  - WARN ... BenefitRateEJB:      Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... CommissionRuleEJB:   Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... AdjustmentEJB:       Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - WARN  - WARN ... RINPremiumMasterEJB: Unused ejbCreate method: ejbCreate()
> 2009-09-08 19:30:22,764 - INFO  - Enterprise application "D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes" loaded.
> 2009-09-08 19:30:22,764 - INFO  - Using 'openejb.deployments.classpath=false'
> 2009-09-08 19:30:22,764 - INFO  - Creating TransactionManager(id=Default Transaction Manager)
> 2009-09-08 19:30:23,076 - INFO  - Creating SecurityService(id=Default Security Service)
> 2009-09-08 19:30:23,138 - INFO  - Creating Resource(id=My Unmanaged DataSource)
> 2009-09-08 19:30:23,201 - INFO  - Creating Resource(id=EElixirDS)
> 2009-09-08 19:30:23,263 - INFO  - Creating Resource(id=MAYBANSYS)
> 2009-09-08 19:30:23,263 - INFO  - Creating Resource(id=My JMS Resource Adapter)
> 2009-09-08 19:30:24,294 - INFO  - Creating Resource(id=My JMS Connection Factory)
> 2009-09-08 19:30:24,310 - INFO  - Creating ConnectionManager for Resource(id=My JMS Connection Factory)
> 2009-09-08 19:30:24,404 - INFO  - Creating Container(id=My CMP Container)
> 2009-09-08 19:30:24,482 - INFO  - Creating Container(id=My BMP Container)
> 2009-09-08 19:30:24,529 - INFO  - Creating Container(id=My Stateful Container)
> 2009-09-08 19:30:24,966 - INFO  - Creating Container(id=My Stateless Container)
> 2009-09-08 19:30:24,997 - INFO  - Creating Container(id=My MDB Container )
> ************************************2009-09-08 19:30:25,013 - INFO  - Assembling app: D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes
> ********************************2009-09-08 19:31:55,488 - INFO  - Using 'openejb.jndiname.format={interfaceClass}'
> 2009-09-08 19:31:55,582 - INFO  - Jndi(name=com.mastek.eelixirinterfaceservice.common.ejb.sessionbean.TSARCheckSLLocalHome) --> Ejb(deployment-id=TSARCheckSLEJB)
> 2009-09-08 19:31:55,582 - INFO  - Jndi(name=com.mastek.eelixirinterfaceservice.common.ejb.sessionbean.MGCCCommonSLHome) --> Ejb(deployment-id=MGCCCommonSLEJB)
> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.product.takaful.ejb.session.TakafulSLLocalHome) --> Ejb(deployment-id=TakafulSLEJB)
> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.policyservicing.TakafulTopUp.ejb.sessionbean.TakafulTopUpSLLocalHome) --> Ejb(deployment-id=PSTakafulTopUpSLEJB)
> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.reports.ejb.sessionbean.ReportSLHome) --> Ejb(deployment-id=ReportSLEJB)
>
> ............................A lot more of JNDI Names ....followed by...................
> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=CommissionRuleEJB, ejb-name=CommissionRuleEJB, container=My BMP Container)
> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=CatastropheEJB, ejb-name=CatastropheEJB, container=My BMP Container)
> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=BillingFrequencySLEJB, ejb-name=BillingFrequencySLEJB, container=My Stateless Container)
> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=UnclaimedMoneyPVSLEJB, ejb-name=UnclaimedMoneyPVSLEJB, container=My Stateless ........................Lots of these................and in the end...................
> 2009-09-08 19:31:58,565 - INFO  - Created Ejb(deployment-id=ProductPrmMapEJB, ejb-name=ProductPrmMapEJB, container=My BMP Container)
> 2009-09-08 19:31:58,565 - INFO  - Created Ejb(deployment-id=ClawbackEJB, ejb-name=ClawbackEJB, container=My BMP Container)
> 2009-09-08 19:31:58,612 - INFO  - Deployed Application(path=D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes)
>
>
>
> -----Original Message-----
> From: Vikrant Yagnick
> Sent: Tuesday, September 08, 2009 7:38 PM
> To: users@openejb.apache.org
> Subject: RE: OpenEJB Startup Performance
>
> Hi Quintin,
>
> Here is a typical startup log. There are a lot of EJB's for sure, but significant time is taken while assembling the app. (Is that when it searches for the EJB classes?)
>
> Cheers,
> Vikrant
>
> -----Original Message-----
> From: Quintin Beukes [mailto:quintin@skywalk.co.za]
> Sent: Tuesday, September 08, 2009 7:15 PM
> To: users@openejb.apache.org
> Subject: Re: OpenEJB Startup Performance
>
> Like mentioned.
>
> Can you perhaps send us a log output of when OpenEJB starts up.
>
> Q
>
> On Tue, Sep 8, 2009 at 2:50 PM, Vikrant Yagnick <Vi...@mastek.com> wrote:
>> Hi All,
>>
>> Thanks for the replies.
>>
>> We already have a ejb-jar.xml since we have been using EJB 2.1(not 3.0 unfortunately...:().
>> The number of EJB's are going to remain pretty static since it has already been developed.
>>
>> This won't really be that big a problem in Production, as once openejb initializes there is no more delay. I need to figure out a way to initialize it automatically when the main container starts-up (rather than on the first request to the application).
>
>
>
>>
>> The pain really is while we are in development as for any small change requiring a container re-start openEJB needs to re-create the entire application assembly.
>>
>> We initialize openEJB using openejb.conf and set the following:
>> <Deployments dir="classes" />
>>
>> The "classes" folder contains a META-INF folder which in-turn has the ejb-jar.xml.
>>
>> I apologize if this sounds like a real newbie question, but is there a better way for us to do this?
>>
>> Cheers,
>> Vikrant
>>
>> -----Original Message-----
>> From: Jonathan Gallimore [mailto:jonathan.gallimore@gmail.com]
>> Sent: Tuesday, September 08, 2009 6:01 PM
>> To: users@openejb.apache.org
>> Subject: Re: OpenEJB Startup Performance
>>
>> On Mon, Sep 7, 2009 at 10:30 PM, Quintin Beukes <qu...@skywalk.co.za>wrote:
>>
>>> Hey,
>>>
>>> I'm no EJB master either, but I can answer your questions with what I
>>> do know.
>>>
>>> 1. Perfectly fine. If you run it in something like Geronimo, it's
>>> basically just embedded in Geronimo. Your web server is nothing more
>>> than a Java Application, and OpenEJB has 2 modes, Standalone and
>>> Embedded (I think there is another one I can't recall). So you're
>>> just initializing the OpenEJB application inside your VM, and have
>>> the same stability/functionality provided in any other mode. In fact,
>>> I would recommend doing this with OpenEJB any day.
>>>
>>
>> This is absolutely right, it should work fine for you, and will
>> basically just run like the Embedded container. I do this at work for
>> the day job - we functionally test our app using Jetty and OpenEJB,
>> and then we can just access our app as if it were running in JBoss or
>> Geronimo. Its not used in production (yet - but we have considered it)
>> but it works very well. (I wrote it up here:
>> http://openejb.apache.org/functional-testing-with-openejb-jetty-and-se
>> lenium.htmlif
>> you're interested).
>>
>> Let us know if have any problems with this setup.
>>
>>
>>
>>
>>>
>>> 2. How many EJBs do you have for it to take this long? If you have a
>>> huge classpath you can try trimming down the search to only the
>>> desired JARs. See:
>>> http://openejb.apache.org/3.0/application-discovery-via-the-classpath
>>> .html
>>> .
>>> Alternatively you can try and specify static bean configurations in
>>> ejb-jar.xml. They would be something like this:
>>>
>>> <?xml version="1.0" encoding="UTF-8" ?> <ejb-jar
>>> xmlns="http://java.sun.com/xml/ns/javaee" version="3.0"
>>>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
>>>   <enterprise-beans>
>>>      <session>
>>>         <ejb-name>TestBean</ejb-name>
>>>         <local>net.kunye.test.TestLocal</local>
>>>         <remote>net.kunye.test.TestRemote</remote>
>>>      </session>
>>>      <session>
>>>         <ejb-name>PersonnelBean</ejb-name>
>>>         <local>net.kunye.platform.personnel.PersonnelLocal</local>
>>>         <remote>net.kunye.platform.personnel.PersonnelRemote</remote>
>>>      </session>
>>>   </enterprise-beans>
>>> </ejb-jar>
>>>
>>> When you do this all the beans that are listed will be loaded from
>>> XML (no annotation interpretation afaik) and the rest of the beans
>>> will be loaded the normal way.
>>>
>>> What you can do is perhaps hook in a compile-time task to generate
>>> this list for you. If you already have such a file with other
>>> configurations, you can perhaps make a template and generate the
>>> ejb-jar.xml everytime you compile.
>>>
>>> I'm not sure how much this will help. I've never really had to deal
>>> with this problem. The most EJBs I've loaded was around 50 I think,
>>> and it went quick. Some of the other guys might be able to help with
>>> this.
>>>
>>> Q
>>>
>>
>> I agree with what others have said here - it might be spending a long
>> time searching the classpath for EJBs - changing
>> openejb.deployments.classpath.include/exclude settings might help. If
>> you can let us know how many EJBs you have, how many Jars are on your
>> classpath, and maybe a log as well we might be able to help tune this a bit.
>>
>> Jon
>>
>> MASTEK LTD.
>> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
>> In the US, we're called MAJESCOMASTEK
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>>
>
>
>
> --
> Quintin Beukes
>
> MASTEK LTD.
> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
> In the US, we're called MAJESCOMASTEK
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>



--
Quintin Beukes

MASTEK LTD.
Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
In the US, we're called MAJESCOMASTEK

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Re: OpenEJB Startup Performance

Posted by Quintin Beukes <qu...@skywalk.co.za>.
By the way. Thanks for the research and message. I noticed I slight
decrease in our loading times today as well (as the number of EJBs
increased). Please let us know if you have any success with this.

Quintin Beukes



On Thu, Oct 8, 2009 at 12:47 PM, Quintin Beukes <qu...@skywalk.co.za> wrote:
> This is available on the web site, have a look at the "Plug Points"
> section at the bottom of: http://openejb.apache.org/3.0/security.html
>
> A good example is probably to checkout the JACC provider
> implementation in the EJB source. I once considered making a JACC
> provider and was planning on this route - especially good if you don't
> have much experience with JACC internals.
>
> The class I'm referring to is:
> ./container/openejb-core/src/main/java/org/apache/openejb/core/security/jacc/BasicJaccProvider.java
>
> I'm sure you can even extend it and simply override the methods that
> create the policy configurations, creating your own "open to all"
> policies.
>
> Quintin Beukes
>
>
>
> On Mon, Oct 5, 2009 at 11:28 AM, Vikrant Yagnick
> <Vi...@mastek.com> wrote:
>> Hi,
>>
>> I did some further research on the time that OpenEJB takes to startup when the number of EJB's are large.
>> It seems the maximum time is taken during
>> JACCBuilder.build and JACCBuilder.install
>>
>> I read up a little on JACC and the reason for the large time is that it goes through each EJB's, every method to build the PolicyContext object and permissions list.
>>
>> I was wondering, if I could make my own JACC Provider that did not do all of this , as for my use-case we would not need to do permission checking(It can be totally permissive, i.e. allow anyone to access an EJB method).
>>
>> Any tips, on how to make a JACC Provider and use it with OpenEJB would be really helpful.
>> Alternatively, if someone has made a quick and dirty dummy JACC Provider(even for testing), it would be great if they can share the source code for that.
>>
>> Cheers,
>> Vikrant
>>
>>
>>
>> -----Original Message-----
>> From: Quintin Beukes [mailto:quintin@skywalk.co.za]
>> Sent: Tuesday, September 08, 2009 8:21 PM
>> To: users@openejb.apache.org
>> Subject: Re: OpenEJB Startup Performance
>>
>> When it pauses for those 30 seconds, is the last line printed the
>> "Assembling app" line?
>>
>> Q
>>
>> On Tue, Sep 8, 2009 at 4:34 PM, Vikrant Yagnick
>> <Vi...@mastek.com> wrote:
>>> Not sure if this email reached the lists, sending again.....
>>> -----Original Message-----
>>> From: Vikrant Yagnick
>>> Sent: Tuesday, September 08, 2009 7:45 PM
>>> To: Vikrant Yagnick; 'users@openejb.apache.org'
>>> Subject: RE: OpenEJB Startup Performance
>>>
>>> Sorry,
>>>
>>> Not sure if the mail-list allows attachments. I am attaching relevant sections (Highlighting things that seem to take time using ************) :
>>>
>>>
>>> 2009-09-08 19:29:53,319 - INFO  - openejb.home = D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF
>>> 2009-09-08 19:29:53,319 - INFO  - openejb.base = D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF
>>> 2009-09-08 19:29:53,896 - INFO  - Using 'openejb.validation.skip=false'
>>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
>>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
>>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=My Unmanaged DataSource, type=Resource, provider-id=Default JDBC Database)
>>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=My JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)
>>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=EElixirDS, type=Resource, provider-id=Default JDBC Database)
>>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=MAYBANSYS, type=Resource, provider-id=Default JDBC Database)
>>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=My JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)
>>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=My CMP Container, type=Container, provider-id=Default CMP Container)
>>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My BMP Container, type=Container, provider-id=Default BMP Container)
>>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My Stateful Container, type=Container, provider-id=Default Stateful Container)
>>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My Stateless Container, type=Container, provider-id=Default Stateless Container)
>>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My MDB Container , type=Container, provider-id=Default MDB Container)
>>> ************************2009-09-08 19:29:57,427 - INFO  - Configuring enterprise application: D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes
>>> ************************2009-09-08 19:30:22,748 - WARN  - WARN ... OccupationExtraEJB:  Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,748 - WARN  - WARN ... PremiumMasterEJB:    Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,748 - WARN  - WARN ... ProductBaseEJB:      Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,748 - WARN  - WARN ... ProductCombinationEJB:       Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,748 - WARN  - WARN ... RidersWaivedEJB:     Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... StatusEJB:   Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... CHMInterfaceEJB:     Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... ILinkPolicyEJB:      Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... PCG8DividendEJB:     Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... PCG8DividendEJB:     Unused ejbPostCreate method: ejbPostCreate(com.mastek.eElixir.finance.common.helper.PCG8Dividend)
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... BenefitRateEJB:      Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... CommissionRuleEJB:   Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... AdjustmentEJB:       Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - WARN  - WARN ... RINPremiumMasterEJB: Unused ejbCreate method: ejbCreate()
>>> 2009-09-08 19:30:22,764 - INFO  - Enterprise application "D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes" loaded.
>>> 2009-09-08 19:30:22,764 - INFO  - Using 'openejb.deployments.classpath=false'
>>> 2009-09-08 19:30:22,764 - INFO  - Creating TransactionManager(id=Default Transaction Manager)
>>> 2009-09-08 19:30:23,076 - INFO  - Creating SecurityService(id=Default Security Service)
>>> 2009-09-08 19:30:23,138 - INFO  - Creating Resource(id=My Unmanaged DataSource)
>>> 2009-09-08 19:30:23,201 - INFO  - Creating Resource(id=EElixirDS)
>>> 2009-09-08 19:30:23,263 - INFO  - Creating Resource(id=MAYBANSYS)
>>> 2009-09-08 19:30:23,263 - INFO  - Creating Resource(id=My JMS Resource Adapter)
>>> 2009-09-08 19:30:24,294 - INFO  - Creating Resource(id=My JMS Connection Factory)
>>> 2009-09-08 19:30:24,310 - INFO  - Creating ConnectionManager for Resource(id=My JMS Connection Factory)
>>> 2009-09-08 19:30:24,404 - INFO  - Creating Container(id=My CMP Container)
>>> 2009-09-08 19:30:24,482 - INFO  - Creating Container(id=My BMP Container)
>>> 2009-09-08 19:30:24,529 - INFO  - Creating Container(id=My Stateful Container)
>>> 2009-09-08 19:30:24,966 - INFO  - Creating Container(id=My Stateless Container)
>>> 2009-09-08 19:30:24,997 - INFO  - Creating Container(id=My MDB Container )
>>> ************************************2009-09-08 19:30:25,013 - INFO  - Assembling app: D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes
>>> ********************************2009-09-08 19:31:55,488 - INFO  - Using 'openejb.jndiname.format={interfaceClass}'
>>> 2009-09-08 19:31:55,582 - INFO  - Jndi(name=com.mastek.eelixirinterfaceservice.common.ejb.sessionbean.TSARCheckSLLocalHome) --> Ejb(deployment-id=TSARCheckSLEJB)
>>> 2009-09-08 19:31:55,582 - INFO  - Jndi(name=com.mastek.eelixirinterfaceservice.common.ejb.sessionbean.MGCCCommonSLHome) --> Ejb(deployment-id=MGCCCommonSLEJB)
>>> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.product.takaful.ejb.session.TakafulSLLocalHome) --> Ejb(deployment-id=TakafulSLEJB)
>>> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.policyservicing.TakafulTopUp.ejb.sessionbean.TakafulTopUpSLLocalHome) --> Ejb(deployment-id=PSTakafulTopUpSLEJB)
>>> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.reports.ejb.sessionbean.ReportSLHome) --> Ejb(deployment-id=ReportSLEJB)
>>>
>>> ............................A lot more of JNDI Names ....followed by...................
>>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=CommissionRuleEJB, ejb-name=CommissionRuleEJB, container=My BMP Container)
>>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=CatastropheEJB, ejb-name=CatastropheEJB, container=My BMP Container)
>>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=BillingFrequencySLEJB, ejb-name=BillingFrequencySLEJB, container=My Stateless Container)
>>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=UnclaimedMoneyPVSLEJB, ejb-name=UnclaimedMoneyPVSLEJB, container=My Stateless ........................Lots of these................and in the end...................
>>> 2009-09-08 19:31:58,565 - INFO  - Created Ejb(deployment-id=ProductPrmMapEJB, ejb-name=ProductPrmMapEJB, container=My BMP Container)
>>> 2009-09-08 19:31:58,565 - INFO  - Created Ejb(deployment-id=ClawbackEJB, ejb-name=ClawbackEJB, container=My BMP Container)
>>> 2009-09-08 19:31:58,612 - INFO  - Deployed Application(path=D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes)
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: Vikrant Yagnick
>>> Sent: Tuesday, September 08, 2009 7:38 PM
>>> To: users@openejb.apache.org
>>> Subject: RE: OpenEJB Startup Performance
>>>
>>> Hi Quintin,
>>>
>>> Here is a typical startup log. There are a lot of EJB's for sure, but significant time is taken while assembling the app. (Is that when it searches for the EJB classes?)
>>>
>>> Cheers,
>>> Vikrant
>>>
>>> -----Original Message-----
>>> From: Quintin Beukes [mailto:quintin@skywalk.co.za]
>>> Sent: Tuesday, September 08, 2009 7:15 PM
>>> To: users@openejb.apache.org
>>> Subject: Re: OpenEJB Startup Performance
>>>
>>> Like mentioned.
>>>
>>> Can you perhaps send us a log output of when OpenEJB starts up.
>>>
>>> Q
>>>
>>> On Tue, Sep 8, 2009 at 2:50 PM, Vikrant Yagnick <Vi...@mastek.com> wrote:
>>>> Hi All,
>>>>
>>>> Thanks for the replies.
>>>>
>>>> We already have a ejb-jar.xml since we have been using EJB 2.1(not 3.0 unfortunately...:().
>>>> The number of EJB's are going to remain pretty static since it has already been developed.
>>>>
>>>> This won't really be that big a problem in Production, as once openejb initializes there is no more delay. I need to figure out a way to initialize it automatically when the main container starts-up (rather than on the first request to the application).
>>>
>>>
>>>
>>>>
>>>> The pain really is while we are in development as for any small change requiring a container re-start openEJB needs to re-create the entire application assembly.
>>>>
>>>> We initialize openEJB using openejb.conf and set the following:
>>>> <Deployments dir="classes" />
>>>>
>>>> The "classes" folder contains a META-INF folder which in-turn has the ejb-jar.xml.
>>>>
>>>> I apologize if this sounds like a real newbie question, but is there a better way for us to do this?
>>>>
>>>> Cheers,
>>>> Vikrant
>>>>
>>>> -----Original Message-----
>>>> From: Jonathan Gallimore [mailto:jonathan.gallimore@gmail.com]
>>>> Sent: Tuesday, September 08, 2009 6:01 PM
>>>> To: users@openejb.apache.org
>>>> Subject: Re: OpenEJB Startup Performance
>>>>
>>>> On Mon, Sep 7, 2009 at 10:30 PM, Quintin Beukes <qu...@skywalk.co.za>wrote:
>>>>
>>>>> Hey,
>>>>>
>>>>> I'm no EJB master either, but I can answer your questions with what I
>>>>> do know.
>>>>>
>>>>> 1. Perfectly fine. If you run it in something like Geronimo, it's
>>>>> basically just embedded in Geronimo. Your web server is nothing more
>>>>> than a Java Application, and OpenEJB has 2 modes, Standalone and
>>>>> Embedded (I think there is another one I can't recall). So you're
>>>>> just initializing the OpenEJB application inside your VM, and have
>>>>> the same stability/functionality provided in any other mode. In fact,
>>>>> I would recommend doing this with OpenEJB any day.
>>>>>
>>>>
>>>> This is absolutely right, it should work fine for you, and will
>>>> basically just run like the Embedded container. I do this at work for
>>>> the day job - we functionally test our app using Jetty and OpenEJB,
>>>> and then we can just access our app as if it were running in JBoss or
>>>> Geronimo. Its not used in production (yet - but we have considered it)
>>>> but it works very well. (I wrote it up here:
>>>> http://openejb.apache.org/functional-testing-with-openejb-jetty-and-se
>>>> lenium.htmlif
>>>> you're interested).
>>>>
>>>> Let us know if have any problems with this setup.
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> 2. How many EJBs do you have for it to take this long? If you have a
>>>>> huge classpath you can try trimming down the search to only the
>>>>> desired JARs. See:
>>>>> http://openejb.apache.org/3.0/application-discovery-via-the-classpath
>>>>> .html
>>>>> .
>>>>> Alternatively you can try and specify static bean configurations in
>>>>> ejb-jar.xml. They would be something like this:
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8" ?> <ejb-jar
>>>>> xmlns="http://java.sun.com/xml/ns/javaee" version="3.0"
>>>>>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>>>         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
>>>>>   <enterprise-beans>
>>>>>      <session>
>>>>>         <ejb-name>TestBean</ejb-name>
>>>>>         <local>net.kunye.test.TestLocal</local>
>>>>>         <remote>net.kunye.test.TestRemote</remote>
>>>>>      </session>
>>>>>      <session>
>>>>>         <ejb-name>PersonnelBean</ejb-name>
>>>>>         <local>net.kunye.platform.personnel.PersonnelLocal</local>
>>>>>         <remote>net.kunye.platform.personnel.PersonnelRemote</remote>
>>>>>      </session>
>>>>>   </enterprise-beans>
>>>>> </ejb-jar>
>>>>>
>>>>> When you do this all the beans that are listed will be loaded from
>>>>> XML (no annotation interpretation afaik) and the rest of the beans
>>>>> will be loaded the normal way.
>>>>>
>>>>> What you can do is perhaps hook in a compile-time task to generate
>>>>> this list for you. If you already have such a file with other
>>>>> configurations, you can perhaps make a template and generate the
>>>>> ejb-jar.xml everytime you compile.
>>>>>
>>>>> I'm not sure how much this will help. I've never really had to deal
>>>>> with this problem. The most EJBs I've loaded was around 50 I think,
>>>>> and it went quick. Some of the other guys might be able to help with
>>>>> this.
>>>>>
>>>>> Q
>>>>>
>>>>
>>>> I agree with what others have said here - it might be spending a long
>>>> time searching the classpath for EJBs - changing
>>>> openejb.deployments.classpath.include/exclude settings might help. If
>>>> you can let us know how many EJBs you have, how many Jars are on your
>>>> classpath, and maybe a log as well we might be able to help tune this a bit.
>>>>
>>>> Jon
>>>>
>>>> MASTEK LTD.
>>>> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
>>>> In the US, we're called MAJESCOMASTEK
>>>>
>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Quintin Beukes
>>>
>>> MASTEK LTD.
>>> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
>>> In the US, we're called MAJESCOMASTEK
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>>
>>
>>
>>
>> --
>> Quintin Beukes
>>
>> MASTEK LTD.
>> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
>> In the US, we're called MAJESCOMASTEK
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>>
>

Re: OpenEJB Startup Performance

Posted by Quintin Beukes <qu...@skywalk.co.za>.
This is available on the web site, have a look at the "Plug Points"
section at the bottom of: http://openejb.apache.org/3.0/security.html

A good example is probably to checkout the JACC provider
implementation in the EJB source. I once considered making a JACC
provider and was planning on this route - especially good if you don't
have much experience with JACC internals.

The class I'm referring to is:
./container/openejb-core/src/main/java/org/apache/openejb/core/security/jacc/BasicJaccProvider.java

I'm sure you can even extend it and simply override the methods that
create the policy configurations, creating your own "open to all"
policies.

Quintin Beukes



On Mon, Oct 5, 2009 at 11:28 AM, Vikrant Yagnick
<Vi...@mastek.com> wrote:
> Hi,
>
> I did some further research on the time that OpenEJB takes to startup when the number of EJB's are large.
> It seems the maximum time is taken during
> JACCBuilder.build and JACCBuilder.install
>
> I read up a little on JACC and the reason for the large time is that it goes through each EJB's, every method to build the PolicyContext object and permissions list.
>
> I was wondering, if I could make my own JACC Provider that did not do all of this , as for my use-case we would not need to do permission checking(It can be totally permissive, i.e. allow anyone to access an EJB method).
>
> Any tips, on how to make a JACC Provider and use it with OpenEJB would be really helpful.
> Alternatively, if someone has made a quick and dirty dummy JACC Provider(even for testing), it would be great if they can share the source code for that.
>
> Cheers,
> Vikrant
>
>
>
> -----Original Message-----
> From: Quintin Beukes [mailto:quintin@skywalk.co.za]
> Sent: Tuesday, September 08, 2009 8:21 PM
> To: users@openejb.apache.org
> Subject: Re: OpenEJB Startup Performance
>
> When it pauses for those 30 seconds, is the last line printed the
> "Assembling app" line?
>
> Q
>
> On Tue, Sep 8, 2009 at 4:34 PM, Vikrant Yagnick
> <Vi...@mastek.com> wrote:
>> Not sure if this email reached the lists, sending again.....
>> -----Original Message-----
>> From: Vikrant Yagnick
>> Sent: Tuesday, September 08, 2009 7:45 PM
>> To: Vikrant Yagnick; 'users@openejb.apache.org'
>> Subject: RE: OpenEJB Startup Performance
>>
>> Sorry,
>>
>> Not sure if the mail-list allows attachments. I am attaching relevant sections (Highlighting things that seem to take time using ************) :
>>
>>
>> 2009-09-08 19:29:53,319 - INFO  - openejb.home = D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF
>> 2009-09-08 19:29:53,319 - INFO  - openejb.base = D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF
>> 2009-09-08 19:29:53,896 - INFO  - Using 'openejb.validation.skip=false'
>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=My Unmanaged DataSource, type=Resource, provider-id=Default JDBC Database)
>> 2009-09-08 19:29:55,146 - INFO  - Configuring Service(id=My JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)
>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=EElixirDS, type=Resource, provider-id=Default JDBC Database)
>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=MAYBANSYS, type=Resource, provider-id=Default JDBC Database)
>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=My JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)
>> 2009-09-08 19:29:55,162 - INFO  - Configuring Service(id=My CMP Container, type=Container, provider-id=Default CMP Container)
>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My BMP Container, type=Container, provider-id=Default BMP Container)
>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My Stateful Container, type=Container, provider-id=Default Stateful Container)
>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My Stateless Container, type=Container, provider-id=Default Stateless Container)
>> 2009-09-08 19:29:55,177 - INFO  - Configuring Service(id=My MDB Container , type=Container, provider-id=Default MDB Container)
>> ************************2009-09-08 19:29:57,427 - INFO  - Configuring enterprise application: D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes
>> ************************2009-09-08 19:30:22,748 - WARN  - WARN ... OccupationExtraEJB:  Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,748 - WARN  - WARN ... PremiumMasterEJB:    Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,748 - WARN  - WARN ... ProductBaseEJB:      Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,748 - WARN  - WARN ... ProductCombinationEJB:       Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,748 - WARN  - WARN ... RidersWaivedEJB:     Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... StatusEJB:   Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... CHMInterfaceEJB:     Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... ILinkPolicyEJB:      Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... PCG8DividendEJB:     Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... PCG8DividendEJB:     Unused ejbPostCreate method: ejbPostCreate(com.mastek.eElixir.finance.common.helper.PCG8Dividend)
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... BenefitRateEJB:      Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... CommissionRuleEJB:   Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... AdjustmentEJB:       Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - WARN  - WARN ... RINPremiumMasterEJB: Unused ejbCreate method: ejbCreate()
>> 2009-09-08 19:30:22,764 - INFO  - Enterprise application "D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes" loaded.
>> 2009-09-08 19:30:22,764 - INFO  - Using 'openejb.deployments.classpath=false'
>> 2009-09-08 19:30:22,764 - INFO  - Creating TransactionManager(id=Default Transaction Manager)
>> 2009-09-08 19:30:23,076 - INFO  - Creating SecurityService(id=Default Security Service)
>> 2009-09-08 19:30:23,138 - INFO  - Creating Resource(id=My Unmanaged DataSource)
>> 2009-09-08 19:30:23,201 - INFO  - Creating Resource(id=EElixirDS)
>> 2009-09-08 19:30:23,263 - INFO  - Creating Resource(id=MAYBANSYS)
>> 2009-09-08 19:30:23,263 - INFO  - Creating Resource(id=My JMS Resource Adapter)
>> 2009-09-08 19:30:24,294 - INFO  - Creating Resource(id=My JMS Connection Factory)
>> 2009-09-08 19:30:24,310 - INFO  - Creating ConnectionManager for Resource(id=My JMS Connection Factory)
>> 2009-09-08 19:30:24,404 - INFO  - Creating Container(id=My CMP Container)
>> 2009-09-08 19:30:24,482 - INFO  - Creating Container(id=My BMP Container)
>> 2009-09-08 19:30:24,529 - INFO  - Creating Container(id=My Stateful Container)
>> 2009-09-08 19:30:24,966 - INFO  - Creating Container(id=My Stateless Container)
>> 2009-09-08 19:30:24,997 - INFO  - Creating Container(id=My MDB Container )
>> ************************************2009-09-08 19:30:25,013 - INFO  - Assembling app: D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes
>> ********************************2009-09-08 19:31:55,488 - INFO  - Using 'openejb.jndiname.format={interfaceClass}'
>> 2009-09-08 19:31:55,582 - INFO  - Jndi(name=com.mastek.eelixirinterfaceservice.common.ejb.sessionbean.TSARCheckSLLocalHome) --> Ejb(deployment-id=TSARCheckSLEJB)
>> 2009-09-08 19:31:55,582 - INFO  - Jndi(name=com.mastek.eelixirinterfaceservice.common.ejb.sessionbean.MGCCCommonSLHome) --> Ejb(deployment-id=MGCCCommonSLEJB)
>> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.product.takaful.ejb.session.TakafulSLLocalHome) --> Ejb(deployment-id=TakafulSLEJB)
>> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.policyservicing.TakafulTopUp.ejb.sessionbean.TakafulTopUpSLLocalHome) --> Ejb(deployment-id=PSTakafulTopUpSLEJB)
>> 2009-09-08 19:31:55,597 - INFO  - Jndi(name=com.mastek.eElixir.reports.ejb.sessionbean.ReportSLHome) --> Ejb(deployment-id=ReportSLEJB)
>>
>> ............................A lot more of JNDI Names ....followed by...................
>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=CommissionRuleEJB, ejb-name=CommissionRuleEJB, container=My BMP Container)
>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=CatastropheEJB, ejb-name=CatastropheEJB, container=My BMP Container)
>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=BillingFrequencySLEJB, ejb-name=BillingFrequencySLEJB, container=My Stateless Container)
>> 2009-09-08 19:31:58,034 - INFO  - Created Ejb(deployment-id=UnclaimedMoneyPVSLEJB, ejb-name=UnclaimedMoneyPVSLEJB, container=My Stateless ........................Lots of these................and in the end...................
>> 2009-09-08 19:31:58,565 - INFO  - Created Ejb(deployment-id=ProductPrmMapEJB, ejb-name=ProductPrmMapEJB, container=My BMP Container)
>> 2009-09-08 19:31:58,565 - INFO  - Created Ejb(deployment-id=ClawbackEJB, ejb-name=ClawbackEJB, container=My BMP Container)
>> 2009-09-08 19:31:58,612 - INFO  - Deployed Application(path=D:\mobileclient\mobile_client_oc4j\j2ee\mobileclient\applications\mobileclient\eElixir\WEB-INF\classes)
>>
>>
>>
>> -----Original Message-----
>> From: Vikrant Yagnick
>> Sent: Tuesday, September 08, 2009 7:38 PM
>> To: users@openejb.apache.org
>> Subject: RE: OpenEJB Startup Performance
>>
>> Hi Quintin,
>>
>> Here is a typical startup log. There are a lot of EJB's for sure, but significant time is taken while assembling the app. (Is that when it searches for the EJB classes?)
>>
>> Cheers,
>> Vikrant
>>
>> -----Original Message-----
>> From: Quintin Beukes [mailto:quintin@skywalk.co.za]
>> Sent: Tuesday, September 08, 2009 7:15 PM
>> To: users@openejb.apache.org
>> Subject: Re: OpenEJB Startup Performance
>>
>> Like mentioned.
>>
>> Can you perhaps send us a log output of when OpenEJB starts up.
>>
>> Q
>>
>> On Tue, Sep 8, 2009 at 2:50 PM, Vikrant Yagnick <Vi...@mastek.com> wrote:
>>> Hi All,
>>>
>>> Thanks for the replies.
>>>
>>> We already have a ejb-jar.xml since we have been using EJB 2.1(not 3.0 unfortunately...:().
>>> The number of EJB's are going to remain pretty static since it has already been developed.
>>>
>>> This won't really be that big a problem in Production, as once openejb initializes there is no more delay. I need to figure out a way to initialize it automatically when the main container starts-up (rather than on the first request to the application).
>>
>>
>>
>>>
>>> The pain really is while we are in development as for any small change requiring a container re-start openEJB needs to re-create the entire application assembly.
>>>
>>> We initialize openEJB using openejb.conf and set the following:
>>> <Deployments dir="classes" />
>>>
>>> The "classes" folder contains a META-INF folder which in-turn has the ejb-jar.xml.
>>>
>>> I apologize if this sounds like a real newbie question, but is there a better way for us to do this?
>>>
>>> Cheers,
>>> Vikrant
>>>
>>> -----Original Message-----
>>> From: Jonathan Gallimore [mailto:jonathan.gallimore@gmail.com]
>>> Sent: Tuesday, September 08, 2009 6:01 PM
>>> To: users@openejb.apache.org
>>> Subject: Re: OpenEJB Startup Performance
>>>
>>> On Mon, Sep 7, 2009 at 10:30 PM, Quintin Beukes <qu...@skywalk.co.za>wrote:
>>>
>>>> Hey,
>>>>
>>>> I'm no EJB master either, but I can answer your questions with what I
>>>> do know.
>>>>
>>>> 1. Perfectly fine. If you run it in something like Geronimo, it's
>>>> basically just embedded in Geronimo. Your web server is nothing more
>>>> than a Java Application, and OpenEJB has 2 modes, Standalone and
>>>> Embedded (I think there is another one I can't recall). So you're
>>>> just initializing the OpenEJB application inside your VM, and have
>>>> the same stability/functionality provided in any other mode. In fact,
>>>> I would recommend doing this with OpenEJB any day.
>>>>
>>>
>>> This is absolutely right, it should work fine for you, and will
>>> basically just run like the Embedded container. I do this at work for
>>> the day job - we functionally test our app using Jetty and OpenEJB,
>>> and then we can just access our app as if it were running in JBoss or
>>> Geronimo. Its not used in production (yet - but we have considered it)
>>> but it works very well. (I wrote it up here:
>>> http://openejb.apache.org/functional-testing-with-openejb-jetty-and-se
>>> lenium.htmlif
>>> you're interested).
>>>
>>> Let us know if have any problems with this setup.
>>>
>>>
>>>
>>>
>>>>
>>>> 2. How many EJBs do you have for it to take this long? If you have a
>>>> huge classpath you can try trimming down the search to only the
>>>> desired JARs. See:
>>>> http://openejb.apache.org/3.0/application-discovery-via-the-classpath
>>>> .html
>>>> .
>>>> Alternatively you can try and specify static bean configurations in
>>>> ejb-jar.xml. They would be something like this:
>>>>
>>>> <?xml version="1.0" encoding="UTF-8" ?> <ejb-jar
>>>> xmlns="http://java.sun.com/xml/ns/javaee" version="3.0"
>>>>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>>         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
>>>>   <enterprise-beans>
>>>>      <session>
>>>>         <ejb-name>TestBean</ejb-name>
>>>>         <local>net.kunye.test.TestLocal</local>
>>>>         <remote>net.kunye.test.TestRemote</remote>
>>>>      </session>
>>>>      <session>
>>>>         <ejb-name>PersonnelBean</ejb-name>
>>>>         <local>net.kunye.platform.personnel.PersonnelLocal</local>
>>>>         <remote>net.kunye.platform.personnel.PersonnelRemote</remote>
>>>>      </session>
>>>>   </enterprise-beans>
>>>> </ejb-jar>
>>>>
>>>> When you do this all the beans that are listed will be loaded from
>>>> XML (no annotation interpretation afaik) and the rest of the beans
>>>> will be loaded the normal way.
>>>>
>>>> What you can do is perhaps hook in a compile-time task to generate
>>>> this list for you. If you already have such a file with other
>>>> configurations, you can perhaps make a template and generate the
>>>> ejb-jar.xml everytime you compile.
>>>>
>>>> I'm not sure how much this will help. I've never really had to deal
>>>> with this problem. The most EJBs I've loaded was around 50 I think,
>>>> and it went quick. Some of the other guys might be able to help with
>>>> this.
>>>>
>>>> Q
>>>>
>>>
>>> I agree with what others have said here - it might be spending a long
>>> time searching the classpath for EJBs - changing
>>> openejb.deployments.classpath.include/exclude settings might help. If
>>> you can let us know how many EJBs you have, how many Jars are on your
>>> classpath, and maybe a log as well we might be able to help tune this a bit.
>>>
>>> Jon
>>>
>>> MASTEK LTD.
>>> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
>>> In the US, we're called MAJESCOMASTEK
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>>
>>
>>
>>
>> --
>> Quintin Beukes
>>
>> MASTEK LTD.
>> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
>> In the US, we're called MAJESCOMASTEK
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>>
>
>
>
> --
> Quintin Beukes
>
> MASTEK LTD.
> Mastek is in NASSCOM's 'India Top 20' Software Service Exporters List.
> In the US, we're called MAJESCOMASTEK
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from desktop and server.
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>