GlassFish 3.1 - Start Instance BlogThis is a breezy, informal, working, temporary document with Development NEWSApril 19, 2010Hurray. An instance is running on my machine with both REST and the regular HTTP port (8080) working! This is a first! Before we could run a crippled instance but it had to have bogus server and config elements. Namely "server" and "server-config" respectively. Now I can run an instance with one and only one server element named "i1" and one config element named "i1-config". There was quite a bit of V3 code that would flame out when the previously mentioned config elements were missing. Here is how you can try it out(Windows Version):
Note: There are still many classes that have "server" and "server-config" hard-coded. They will all have to be dealt with soon. Immediate Next Steps as of April 19, 2010
We start the development with a new command, start-local-instance. The idea was to start very slowly. the CLI command does plenty but on the server side it is EXACTLY the same as starting a domain with one important exception: the name of the server is not "server". Results – total failure. V3 hangs. [#|2010-04-11T12:54:01.400-0700|SEVERE|glassfishv3.0|null|_ThreadID=11;_ThreadName=Thread-1;|Unable to start v3. Closing all ports java.lang.NullPointerException at java.lang.reflect.Proxy.getInvocationHandler(Proxy.java:636) at org.jvnet.hk2.config.ConfigSupport.getImpl(ConfigSupport.java:229) at com.sun.enterprise.v3.admin.AdminAdapter.registerSystemPropertyListener(AdminAdapter.java:482) at com.sun.enterprise.v3.admin.AdminAdapter.registerDynamicReconfigListeners(AdminAdapter.java:486) at com.sun.enterprise.v3.admin.AdminAdapter.postConstruct(AdminAdapter.java:151) at com.sun.hk2.component.AbstractWombImpl.inject(AbstractWombImpl.java:174) at com.sun.hk2.component.ConstructorWomb$1.run(ConstructorWomb.java:87) at java.security.AccessController.doPrivileged(Native Method) at com.sun.hk2.component.ConstructorWomb.initialize(ConstructorWomb.java:84) at com.sun.hk2.component.AbstractWombImpl.get(AbstractWombImpl.java:77) at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:58) at com.sun.hk2.component.LazyInhabitant.get(LazyInhabitant.java:107) at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:60) at org.jvnet.hk2.component.Habitat$1.get(Habitat.java:276) at java.util.AbstractList$Itr.next(AbstractList.java:345) at com.sun.enterprise.v3.services.impl.GrizzlyService.registerNetworkProxy(GrizzlyService.java:419) at com.sun.enterprise.v3.services.impl.GrizzlyService.registerNetworkProxy(GrizzlyService.java:411) at com.sun.enterprise.v3.services.impl.GrizzlyService.postConstruct(GrizzlyService.java:329) at com.sun.hk2.component.AbstractWombImpl.inject(AbstractWombImpl.java:174) at com.sun.hk2.component.ConstructorWomb$1.run(ConstructorWomb.java:87) at java.security.AccessController.doPrivileged(Native Method) at com.sun.hk2.component.ConstructorWomb.initialize(ConstructorWomb.java:84) at com.sun.hk2.component.AbstractWombImpl.get(AbstractWombImpl.java:77) at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:58) at com.sun.hk2.component.LazyInhabitant.get(LazyInhabitant.java:107) at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:60) at com.sun.enterprise.v3.server.AppServerStartup.run(AppServerStartup.java:236) at com.sun.enterprise.v3.server.AppServerStartup.start(AppServerStartup.java:128) at com.sun.enterprise.module.bootstrap.Main.launch(Main.java:456) at com.sun.enterprise.module.bootstrap.Main.launch(Main.java:400) at org.jvnet.hk2.osgiadapter.HK2Main$StartupContextService.updated(HK2Main.java:102) at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1389) at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88) |#] My next experiment was to run start-local-instance against an actual domain (the default domain1). All I did was change the name of the directory named "domain1" to "server" so that the server's name matches the directory name. Then I ran the command like so: asadmin start-local-instance --agentdir c:/glassfishv3/glassfish --nodeagent domains server Result: catastrophe in Grizzly. V3 hangs!! [#|2010-04-11T12:54:01.400-0700|SEVERE|glassfishv3.0|null|_ThreadID=11;_ThreadName=Thread-1;|Unable to start v3. Closing all ports java.lang.NullPointerException at java.lang.reflect.Proxy.getInvocationHandler(Proxy.java:636) at org.jvnet.hk2.config.ConfigSupport.getImpl(ConfigSupport.java:229) at com.sun.enterprise.v3.admin.AdminAdapter.registerSystemPropertyListener(AdminAdapter.java:482) at com.sun.enterprise.v3.admin.AdminAdapter.registerDynamicReconfigListeners(AdminAdapter.java:486) at com.sun.enterprise.v3.admin.AdminAdapter.postConstruct(AdminAdapter.java:151) at com.sun.hk2.component.AbstractWombImpl.inject(AbstractWombImpl.java:174) at com.sun.hk2.component.ConstructorWomb$1.run(ConstructorWomb.java:87) at java.security.AccessController.doPrivileged(Native Method) at com.sun.hk2.component.ConstructorWomb.initialize(ConstructorWomb.java:84) at com.sun.hk2.component.AbstractWombImpl.get(AbstractWombImpl.java:77) at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:58) at com.sun.hk2.component.LazyInhabitant.get(LazyInhabitant.java:107) at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:60) at org.jvnet.hk2.component.Habitat$1.get(Habitat.java:276) at java.util.AbstractList$Itr.next(AbstractList.java:345) at com.sun.enterprise.v3.services.impl.GrizzlyService.registerNetworkProxy(GrizzlyService.java:419) at com.sun.enterprise.v3.services.impl.GrizzlyService.registerNetworkProxy(GrizzlyService.java:411) at com.sun.enterprise.v3.services.impl.GrizzlyService.postConstruct(GrizzlyService.java:329) at com.sun.hk2.component.AbstractWombImpl.inject(AbstractWombImpl.java:174) at com.sun.hk2.component.ConstructorWomb$1.run(ConstructorWomb.java:87) at java.security.AccessController.doPrivileged(Native Method) at com.sun.hk2.component.ConstructorWomb.initialize(ConstructorWomb.java:84) at com.sun.hk2.component.AbstractWombImpl.get(AbstractWombImpl.java:77) at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:58) at com.sun.hk2.component.LazyInhabitant.get(LazyInhabitant.java:107) at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:60) at com.sun.enterprise.v3.server.AppServerStartup.run(AppServerStartup.java:236) at com.sun.enterprise.v3.server.AppServerStartup.start(AppServerStartup.java:128) at com.sun.enterprise.module.bootstrap.Main.launch(Main.java:456) at com.sun.enterprise.module.bootstrap.Main.launch(Main.java:400) at org.jvnet.hk2.osgiadapter.HK2Main$StartupContextService.updated(HK2Main.java:102) at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1389) at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88) |#]
Problem LocatedAdminAdapter.registerSytemPropertyListener() makes this call which results in NPE – i.e. it is hard-coded in that the name of the server is "server". Period. The above call returns null which is not checked and an NPE results. Finally an UNDEAD server is the result – you can't stop it yet it does not exist. Below are all the java files I could find with TreeGrep that use that hard-coded value. This is going to be some work! C:\gf\v3>java com.elf.io.TreeGrep -f DEFAULT_SERVER_INSTANCE_NAME C:\gf\v3\admin\cli\src\main\java\org\glassfish\admin\cli\resources\AddResources.java C:\gf\v3\admin\cli\src\main\java\org\glassfish\admin\cli\resources\CreateResourceRef.java C:\gf\v3\admin\cli\src\main\java\org\glassfish\admin\cli\resources\DeleteResourceRef.java C:\gf\v3\admin\cli\src\main\java\org\glassfish\admin\cli\resources\ListResourceRefs.java C:\gf\v3\admin\monitor\src\main\java\org\glassfish\admin\monitor\cli\ListJndiEntries.java C:\gf\v3\admin\server-mgmt\src\main\java\com\sun\enterprise\admin\servermgmt\pe\PEFileLayout.java C:\gf\v3\admin\server-mgmt\src\main\java\com\sun\enterprise\admin\servermgmt\RepositoryManager.java C:\gf\v3\common\common-util\src\main\java\com\sun\enterprise\util\SystemPropertyConstants.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateAdminObject.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateConnectorConnectionPool.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateConnectorResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateConnectorSecurityMap.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateCustomResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateJavaMailResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateJndiResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\CreateResourceAdapterConfig.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteAdminObject.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteConnectorConnectionPool.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteConnectorResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteConnectorSecurityMap.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteCustomResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteJavaMailResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteJndiResource.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\DeleteResourceAdapterConfig.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\ListCustomResources.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\ListJavaMailResources.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\ListJndiResources.java C:\gf\v3\connectors\admin\src\main\java\org\glassfish\connectors\admin\cli\UpdateConnectorSecurityMap.java C:\gf\v3\connectors\admin\src\test\java\org\glassfish\connectors\admin\cli\CreateCustomResourceTest.java C:\gf\v3\connectors\admin\src\test\java\org\glassfish\connectors\admin\cli\CreateJavaMailResourceTest.java C:\gf\v3\connectors\admin\src\test\java\org\glassfish\connectors\admin\cli\CreateJndiResourceTest.java C:\gf\v3\connectors\admin\src\test\java\org\glassfish\connectors\admin\cli\DeleteCustomResourceTest.java C:\gf\v3\connectors\admin\src\test\java\org\glassfish\connectors\admin\cli\DeleteJavaMailResourceTest.java C:\gf\v3\connectors\admin\src\test\java\org\glassfish\connectors\admin\cli\DeleteJndiResourceTest.java C:\gf\v3\core\kernel\src\main\java\com\sun\enterprise\v3\admin\AdminAdapter.java C:\gf\v3\core\kernel\src\main\java\com\sun\enterprise\v3\admin\commands\CreateThreadpool.java C:\gf\v3\core\kernel\src\main\java\com\sun\enterprise\v3\admin\commands\DeleteThreadpool.java C:\gf\v3\core\kernel\src\main\java\com\sun\enterprise\v3\admin\CreateSystemProperties.java C:\gf\v3\core\kernel\src\main\java\com\sun\enterprise\v3\admin\DeleteSystemProperty.java C:\gf\v3\core\kernel\src\main\java\com\sun\enterprise\v3\admin\listener\SystemPropertyListener.java C:\gf\v3\core\kernel\src\main\java\com\sun\enterprise\v3\admin\ListSystemProperties.java C:\gf\v3\ejb\ejb-container\src\main\java\org\glassfish\ejb\admin\cli\ListTimers.java C:\gf\v3\jdbc\admin\src\main\java\org\glassfish\jdbc\admin\cli\CreateJdbcConnectionPool.java C:\gf\v3\jdbc\admin\src\main\java\org\glassfish\jdbc\admin\cli\CreateJdbcResource.java C:\gf\v3\jdbc\admin\src\main\java\org\glassfish\jdbc\admin\cli\DeleteJdbcResource.java C:\gf\v3\jdbc\admin\src\test\java\org\glassfish\jdbc\admin\cli\CreateJdbcResourceTest.java C:\gf\v3\jdbc\admin\src\test\java\org\glassfish\jdbc\admin\cli\DeleteJdbcResourceTest.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\CreateJMSDestination.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\CreateJMSHost.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\CreateJMSResource.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\DeleteJMSDestination.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\DeleteJMSHost.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\DeleteJMSResource.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\FlushJMSDestination.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\JMSPing.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\ListJMSDestinations.java C:\gf\v3\jms\admin\src\main\java\org\glassfish\jms\admin\cli\ListJMSHosts.java C:\gf\v3\orb\orb-connector\src\main\java\org\glassfish\orb\admin\cli\CreateIiopListener.java C:\gf\v3\orb\orb-connector\src\main\java\org\glassfish\orb\admin\cli\DeleteIiopListener.java C:\gf\v3\transaction\jta\src\main\java\org\glassfish\jta\admin\cli\FreezeTransactionService.java C:\gf\v3\transaction\jta\src\main\java\org\glassfish\jta\admin\cli\RollbackTransaction.java C:\gf\v3\transaction\jta\src\main\java\org\glassfish\jta\admin\cli\UnFreezeTransactionService.java C:\gf\v3\webservices\jsr109-impl\src\main\java\com\sun\enterprise\webservice\WsTxUtils.java Time: 263797 msec April 29, 2010start-local-instance is 95% done. Current instructions on running start-local-instance (i.e. this is one way to do it with no working create-instance command) Windows:
Not-Windows:
|