tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vikrant Yagnick <Vikrant.Yagn...@mastek.com>
Subject RE: OpenEJB Startup Performance
Date Mon, 14 Sep 2009 03:41:41 GMT
Hi David,

The number of beans are between 120-140. We are working on reducing this number as we do not
really need all the beans all the time.
Thanks for your help.

Cheers,
Vikrant
________________________________________
From: David Blevins [david.blevins@visi.com]
Sent: Saturday, September 12, 2009 5:37 AM
To: users@openejb.apache.org
Subject: Re: OpenEJB Startup Performance

I'll see if I can add some more debug logging in there which might
give is more of an idea where time is spent in that gap after
"Assembling app".

For my own reference, how many beans do you have?   In terms of
performance one tactic might be to in some way filter down the number
of beans to only those that are required for a given test.  Do you
know if there are things you don't need for all the tests?

For example one user was complaining on startup times of his app and
we ended up cooking up a way to dynamically remove all the MDBs and
WebServices from his app while testing which speed up the startup time
a bit.  Might be able to do the same for you or provide you with hook
to do what you like in that regard.

-David


On Sep 8, 2009, at 9:04 AM, Vikrant Yagnick wrote:

> Yes, pretty much.
>
> It hangs for between a minute to two minutes at the "Assembling app"
> part.
>
> Cheers,
> Vikrant
>
> ________________________________________
> From: Quintin Beukes [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
> <Vikrant.Yagnick@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 <Vikrant.Yagnick@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 <quintin@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.
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>


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.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Mime
View raw message