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:quin...@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 <vikrant.yagn...@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:quin...@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 <vikrant.yagn...@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.gallim...@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 <quin...@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. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~