In Windows, the startup time is drastically slower than WAS 6.1. I have 3 EARs installed, each containing a few WARs, 1 of which contains many small files for help related content. The startup time on WAS 6.1 with the same applications is around 2 minutes, while the startup time under WAS 7 is around 10 to 15 minutes.
What is WAS 7 doing differently? The annotation scanner is also throwing exceptions during startup as it tries to instantiate a few classes, such as the following:
(4/30/09 12:57:54:958 EDT) 00000008 annotation W com.ibm.ws.webcontainer.annotation.WASAnnotationHelper collectClasses unable to instantiate class
java.lang.ClassNotFoundException:
at java.lang.Class.forName(Class.java:169)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelper.loadClass(WASAnnotationHelper.java:611)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelper.collectClasses(WASAnnotationHelper.java:405)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelper.(WASAnnotationHelper.java:134)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelperManager.getAnnotationHelper(WASAnnotationHelperManager.java:59)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:241)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:100)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:166)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:728)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:613)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:376)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:668)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1144)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1313)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:611)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:938)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:723)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2068)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:437)
at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:122)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:380)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$300(CompositionUnitMgrImpl.java:108)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:935)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:349)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)
Does it really need to instantiate them? If so, why can't it find these classes? As we are migrating from WAS 6.1 to WAS 7, we are not using JEE 5 annotations yet. Is this the source of the extremely slow startup times? Can it be turned off?
Thanks.
Can you please try either setting the UseWSFEP61ScanPolicy property to false in the META-INF/MANIFEST.MF of a Web archive (WAR) file or EJB module or by defining the Java virtual machine custom property, com.ibm.websphere.webservices.UseWSFEP61ScanPolicy, on servers to request scanning during application installation and server startup. See [1] for some details, also search in infocenter for "UseWSFEP61ScanPolicy" to read more about it.
thanks,
dims
I set the "com.ibm.websphere.webservices.UseWSFEP61ScanPolicy" setting to false, but that didn't help. I then set the "com.ibm.websphere.ejb.UseEJB61FEPScanPolicy" setting to false, and the exceptions went away (and our EJB still functioned properly), however, startup speed did not increase.
Any other ideas for speeding up startup times in Windows?
Thanks.
To clean the Java Cache used during startup : WAS_HOME/profiles/PROFILE_NAME/bin/osgiCfgInit.sh (.bat)
To turn off the Java Cache you need to go in the JVM settings in the App Server. On the Generic JVM Arguments add the following : -Xshareclasses:none
You may also want to check your class loading strategy.
Regards,
Brian
Our class loading strategy is set to "parent last" across the board, but it was set this way in WebSphere 6.1 as well. How can the startup performance be so much worse than WebSphere 6.1 with the same settings?
Thanks again for the replies so far!
Regards,
Brian
On another note, I deployed an EAR that normally contains a WAR with 15,000+ small files (for help/content). I removed all the content files to speed up deployment, then I put them back in place after deployment, as deploying with the files in place takes upwards of 30 minutes. After I put the files back in place, simple configuration changes in the admin console (such as user role mappings) take almost 30 minutes. Is WAS 7 scanning through all the files in the EAR for some reason? Why are the deployments and settings changes doing this?
Thanks.
> On another note, I deployed an EAR that normally contains a WAR with
> 15,000+ small files (for help/content). I removed all the content files
> to speed up deployment, then I put them back in place after deployment,
> as deploying with the files in place takes upwards of 30 minutes. After
> I put the files back in place, simple configuration changes in the admin
> console (such as user role mappings) take almost 30 minutes. Is WAS 7
> scanning through all the files in the EAR for some reason? Why are the
> deployments and settings changes doing this?
I'm not sure why WebSphere is scanning all files in a deployed EAR.
Unlike its own configuration repository, it shouldn't be handling updates
(can be mistaken though).
However, I strongly recommend to separate the small files from the WAR
file. Rather, put it elsewhere on the system and have the web server
serve those static files (I suppose they are static) and let WebSphere
handle the dynamic ones only.
Wkr,
Sven Vermeulen
com.ibm.ws.webcontainer.annotation.WASAnnotationHelper collectClasses unable to instantiate class
I have changed setting the UseWSFEP61ScanPolicy: false in MANIFEST.MF file. But still the same error. Can any one help. Also , how do we enable "Start components as needed" ?
Can somebody please help. As iam struck with this error for the past one week.
Other than the exceptions on startup, how are your startup times? Are you using Windows?
There is no such custom property mentioned in my JVM properties.
I have checked the check box which said "Start Component as needed"
But still i get the "ClassNotFound" exception.
Iam using RAD7.5 with WAS 7.O test environment.
Can anybody please help!!!
Iam struggling to get this issue fixed