You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by David Jencks <da...@yahoo.com> on 2009/11/20 06:42:21 UTC

Re: minimal tomcat server is assembled, but failed on starting module tomcat6

I don't know how resource bundles work but I expect they have  
assumptions about classloaders loading the resource files that are not  
valid in osgi outside a single bundle.  I'm not sure exactly what  
happens with osgi either but I think that you have to use the Bundle  
object to load classes and resources from other bundles, not the  
classloader that loads the classes in a bundle.

For a modular system I'd expect that the resources would need to be in  
the bundle itself or else supplied through some kind of resource  
service.  If the resources aren't in the right bundle lets move them.

BTW I'm starting to try to get the welcome app to deploy, I'm adding a  
couple mini-assemblies to the build.  I'm starting with the jetty  
server.... if you'd like to take a look at the tomcat one that might  
be a standardized testbed for this work.  I've just committed the  
server assemblies under plugins/welcome.

thanks
david jencks

On Nov 19, 2009, at 7:51 PM, Forrest Xia wrote:

> Hi,
>
> I managed to locally make an assembly of tomcat-minimal  
> successfully(of cause, disabled some modules, such as hot-deploy,  
> remote-deploy).
>
> But when I tried to start the server, I encounter a strange problem  
> that I can not figure out why. The problem is:
>
> When boot comes to plugin "org.apache.geronimo.configs/tomcat6/3.0- 
> SNAPSHOT/car", an  java.util.MissingResourceException threw out.  
> Full stack trace is:
>
> [*********************************       ]  83%  10s Starting  
> org.apache.ger...2009-11-20 11:13:40,920 ERROR [GBeanInstanceState]  
> Error while starting; GBean is now in the FAILED state:  
> abstractName="org.apache.geronimo.configs/tomcat6/3.0-SNAPSHOT/car? 
> ServiceModule=org.apache.geronimo.configs/tomcat6/3.0-SNAPSHOT/ 
> car,j2eeType=GBean,name=TomcatServer"
> org.apache.xbean.recipe.ConstructionException: Error invoking  
> constructor: public  
> org.apache.catalina.connector.Connector(java.lang.String) throws  
> java.lang.Exception
>     at org.apache.xbean.recipe.ReflectionUtil 
> $ConstructorFactory.create(ReflectionUtil.java:962)
>     at  
> org 
> .apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java: 
> 276)
>     at  
> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
>     at  
> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
>     at  
> org 
> .apache 
> .geronimo.tomcat.model.ConnectorType.getConnector(ConnectorType.java: 
> 595)
>     at  
> org 
> .apache 
> .geronimo.tomcat.model.ServiceType.getService(ServiceType.java:278)
>     at  
> org.apache.geronimo.tomcat.model.ServerType.build(ServerType.java:294)
>     at  
> org 
> .apache 
> .geronimo.tomcat.TomcatServerGBean.<init>(TomcatServerGBean.java:132)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native  
> Method)
>     at  
> sun 
> .reflect 
> .NativeConstructorAccessorImpl 
> .newInstance(NativeConstructorAccessorImpl.java:39)
>     at  
> sun 
> .reflect 
> .DelegatingConstructorAccessorImpl 
> .newInstance(DelegatingConstructorAccessorImpl.java:27)
>     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>     at org.apache.xbean.recipe.ReflectionUtil 
> $ConstructorFactory.create(ReflectionUtil.java:952)
>     at  
> org 
> .apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java: 
> 276)
>     at  
> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
>     at  
> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:917)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean 
> .runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java: 
> 269)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean 
> .runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java: 
> 125)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:544)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:385)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel 
> .config 
> .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java: 
> 459)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel 
> .config 
> .KernelConfigurationManager.start(KernelConfigurationManager.java:223)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel 
> .config 
> .SimpleConfigurationManager 
> .startConfiguration(SimpleConfigurationManager.java:713)
>     at  
> org 
> .apache 
> .geronimo.system.main.EmbeddedDaemon.doStartup(EmbeddedDaemon.java: 
> 149)
>     at  
> org 
> .apache 
> .geronimo.system.main.EmbeddedDaemon.execute(EmbeddedDaemon.java:81)
>     at  
> org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:88)
>     at  
> org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
>     at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java: 
> 32)
> Caused by: java.util.MissingResourceException: Can't find bundle for  
> base name org.apache.catalina.connector.LocalStrings, locale en_US
>     at  
> java 
> .util 
> .ResourceBundle.throwMissingResourceException(ResourceBundle.java: 
> 1521)
>     at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java: 
> 1260)
>     at java.util.ResourceBundle.getBundle(ResourceBundle.java:787)
>     at  
> org.apache.tomcat.util.res.StringManager.<init>(StringManager.java:77)
>     at  
> org.apache.tomcat.util.res.StringManager.<init>(StringManager.java:72)
>     at  
> org 
> .apache.tomcat.util.res.StringManager.getManager(StringManager.java: 
> 161)
>     at  
> org 
> .apache.catalina.connector.MapperListener.<init>(MapperListener.java: 
> 79)
>     at org.apache.catalina.connector.Connector.<init>(Connector.java: 
> 266)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native  
> Method)
>     at  
> sun 
> .reflect 
> .NativeConstructorAccessorImpl 
> .newInstance(NativeConstructorAccessorImpl.java:39)
>     at  
> sun 
> .reflect 
> .DelegatingConstructorAccessorImpl 
> .newInstance(DelegatingConstructorAccessorImpl.java:27)
>     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>     at org.apache.xbean.recipe.ReflectionUtil 
> $ConstructorFactory.create(ReflectionUtil.java:952)
>     ... 29 more
>
> So I double check the catalina bundle(whose bundle id is 122 in my  
> assembly) and confirmed there are resource files for LocalStrings in  
> the jar. Its package is exported and imported properly in the  
> bundle's MENIFEST file. Just no LocalStrings_en_US.properties there.  
> But I think, even the local resource is not found, the default  
> resource LocalStrings.properties should be picked up.
>
> From the error msg, it does not happen as supposed to. However, I  
> manually add a resource file to the jar, stop osgi runtime, clear  
> bundle cache, and start the server again. The same problem is still  
> there. Why? does the caller bundle not see the resource from another  
> bundle? I am confused.
>
> Here I also attached an active bundle list before the error happens  
> for reference.
>
> Hope someone can give me a light about it. My ideal goal is to have  
> a minimal tomcat assembly started without problems, so that I can  
> try to deploy a simple sample application to the runtime and see if  
> it works.
>
> Thanks for any comments.
>
> Forrest
>
>
> <startedbundles.txt>


Re: minimal tomcat server is assembled, but failed on starting module tomcat6

Posted by Forrest Xia <fo...@gmail.com>.
On Fri, Nov 27, 2009 at 4:40 PM, David Jencks <da...@yahoo.com>wrote:

> I'm not sure if this is the problem you are seeing....
>
> Previously when we were unpacking plugins we supplied the file system
> location of the unpacked web app (inside the plugin) to the web container.
>  IMO this isn't appropriate when using a packed war in osgi.  We may have to
> fix tomcat so it doesn't think it needs this file system location.  I
> haven't seen a problem in jetty 8 from this but thought there were problems
> earlier in jetty 5 or 6 when we left it out.
>

Seems it's not a problem of app packaging issue. The problem is about
whether the tomcat server is indeed started when error msg shows "No global
naming context defined for server". Because I tried to visit the
http://localhost:8080, there is nothing responded.


> thanks
> david jencks
>
>
> Forrest

Re: minimal tomcat server is assembled, but failed on starting module tomcat6

Posted by David Jencks <da...@yahoo.com>.
I'm not sure if this is the problem you are seeing....

Previously when we were unpacking plugins we supplied the file system  
location of the unpacked web app (inside the plugin) to the web  
container.  IMO this isn't appropriate when using a packed war in  
osgi.  We may have to fix tomcat so it doesn't think it needs this  
file system location.  I haven't seen a problem in jetty 8 from this  
but thought there were problems earlier in jetty 5 or 6 when we left  
it out.

thanks
david jencks

On Nov 27, 2009, at 12:16 AM, Forrest Xia wrote:

> Hi Jarek,
>
> Yes, as you pointed out, the classes in util bundle use many classes  
> not imported by the util bundle, that caused resources not found and  
> class not found exceptions when booting the tomcat server.
>
> Follow your instructions, I unified StringManager class in catalina  
> bundle and finally add DynamicImport-Package * to util pom. then the  
> server can start now, and seems http port is open on 8080 as well.
>
> But I noticed an error msg printed out on the console:
> [*********************************       ]  84%   7s Starting  
> org.apache.ger...2009-11-27 16:06:22,011 ERROR  
> [GlobalResourcesLifecycleListener] No global naming context defined  
> for server
>
> I googled for a while, not find any clue about it.
>
> After that, I tried to load the welcome-tomcat car, it failed with  
> exception as follows:
> ERROR [GBeanInstanceState] Error while starting; GBean is now in the  
> FAILED state: abstractName="org.apache.geronimo.configs/welcome- 
> tomcat/3.0-SNAPSHOT/car? 
> J2EEApplication 
> =null,j2eeType=WebModule,name=org.apache.geronimo.configs/welcome- 
> tomcat/3.0-SNAPSHOT/car"
> java.lang.NullPointerException
>     at  
> org 
> .apache 
> .geronimo.tomcat.TomcatWebAppContext.<init>(TomcatWebAppContext.java: 
> 172)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native  
> Method)
>     at  
> sun 
> .reflect 
> .NativeConstructorAccessorImpl 
> .newInstance(NativeConstructorAccessorImpl.java:39)
>     at  
> sun 
> .reflect 
> .DelegatingConstructorAccessorImpl 
> .newInstance(DelegatingConstructorAccessorImpl.java:27)
>     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>     at org.apache.xbean.recipe.ReflectionUtil 
> $ConstructorFactory.create(ReflectionUtil.java:952)
>     at  
> org 
> .apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java: 
> 276)
>     at  
> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
>     at  
> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:917)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean 
> .runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java: 
> 269)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
>     at  
> org 
> .apache 
> .geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:530)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java: 
> 110)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:145)
>     at org.apache.geronimo.gbean.runtime.GBeanDependency 
> $1.running(GBeanDependency.java:119)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel 
> .basic 
> .BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java: 
> 175)
>     at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access 
> $300(BasicLifecycleMonitor.java:44)
>     at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor 
> $RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java: 
> 253)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean 
> .runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java: 
> 295)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean 
> .runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java: 
> 125)
>     at  
> org 
> .apache 
> .geronimo 
> .gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:544)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:385)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel 
> .config 
> .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java: 
> 461)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel 
> .config 
> .KernelConfigurationManager.start(KernelConfigurationManager.java:223)
>     at  
> org 
> .apache 
> .geronimo 
> .kernel 
> .config 
> .SimpleConfigurationManager 
> .startConfiguration(SimpleConfigurationManager.java:715)
>     at  
> org 
> .apache 
> .geronimo.system.main.EmbeddedDaemon.doStartup(EmbeddedDaemon.java: 
> 149)
>     at  
> org 
> .apache 
> .geronimo.system.main.EmbeddedDaemon.execute(EmbeddedDaemon.java:81)
>     at  
> org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:109)
>     at  
> org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
>     at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java: 
> 32)
>
> Any comments?
>
> Forrest


Re: minimal tomcat server is assembled, but failed on starting module tomcat6

Posted by Forrest Xia <fo...@gmail.com>.
Hi Jarek,

Yes, as you pointed out, the classes in util bundle use many classes not
imported by the util bundle, that caused resources not found and class not
found exceptions when booting the tomcat server.

Follow your instructions, I unified StringManager class in catalina bundle
and finally add DynamicImport-Package * to util pom. then the server can
start now, and seems http port is open on 8080 as well.

But I noticed an error msg printed out on the console:
[*********************************       ]  84%   7s Starting
org.apache.ger...2009-11-27 16:06:22,011 ERROR
[GlobalResourcesLifecycleListener] No global naming context defined for
server

I googled for a while, not find any clue about it.

After that, I tried to load the welcome-tomcat car, it failed with exception
as follows:
ERROR [GBeanInstanceState] Error while starting; GBean is now in the FAILED
state:
abstractName="org.apache.geronimo.configs/welcome-tomcat/3.0-SNAPSHOT/car?J2EEApplication=null,j2eeType=WebModule,name=org.apache.geronimo.configs/welcome-tomcat/3.0-SNAPSHOT/car"
java.lang.NullPointerException
    at
org.apache.geronimo.tomcat.TomcatWebAppContext.<init>(TomcatWebAppContext.java:172)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at
org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:952)
    at
org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
    at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
    at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
    at
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:917)
    at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:269)
    at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
    at
org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:530)
    at
org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java:110)
    at
org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:145)
    at
org.apache.geronimo.gbean.runtime.GBeanDependency$1.running(GBeanDependency.java:119)
    at
org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:175)
    at
org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:44)
    at
org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:253)
    at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:295)
    at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
    at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:125)
    at
org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:544)
    at
org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:385)
    at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:461)
    at
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:223)
    at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:715)
    at
org.apache.geronimo.system.main.EmbeddedDaemon.doStartup(EmbeddedDaemon.java:149)
    at
org.apache.geronimo.system.main.EmbeddedDaemon.execute(EmbeddedDaemon.java:81)
    at org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:109)
    at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
    at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:32)

Any comments?

Forrest

Re: minimal tomcat server is assembled, but failed on starting module tomcat6

Posted by Jarek Gawor <jg...@gmail.com>.
The problem was that a class in catalina bundle was using
StringManager class in util bundle to load a resource that was in
catalina bundle. And the utll bundle does not import the catalina
packages.

My solution for now is to make sure that each Tomcat bundle has its
own version of StringManager and that all classes within the given
bundle use the right StringManager to load the resources. That's what
Tomcat seemed to be doing anyway since there is a number of
StringManager copies in different packages/bundles already.

Another thing I realized is that the util bundle is only really used
by the catalina bundle. So we could also merge these together to make
things a bit simpler.

After resolving that problem locally I ran into another problem. In
Geronimo we add some Geronimo specific listeners to each web app (see
addInstanceListener() in GeronimoStandardContext). These classes are
instantiated by Tomcat using Class.forName(String) in
StandardContext.createWrapper(). So the Geronimo-specific class will
be loaded using the catalina bundle classloader and things will fail.

The easy fix is to add DynamicImport-Package * to catalina bundle. Or
we could modify the Tomcat code to use a specific classloader when
loading the listeners, etc. Thoughts or other solutions?

Jarek

On Fri, Nov 20, 2009 at 12:42 AM, David Jencks <da...@yahoo.com> wrote:
> I don't know how resource bundles work but I expect they have assumptions
> about classloaders loading the resource files that are not valid in osgi
> outside a single bundle.  I'm not sure exactly what happens with osgi either
> but I think that you have to use the Bundle object to load classes and
> resources from other bundles, not the classloader that loads the classes in
> a bundle.
>
> For a modular system I'd expect that the resources would need to be in the
> bundle itself or else supplied through some kind of resource service.  If
> the resources aren't in the right bundle lets move them.
>
> BTW I'm starting to try to get the welcome app to deploy, I'm adding a
> couple mini-assemblies to the build.  I'm starting with the jetty server....
> if you'd like to take a look at the tomcat one that might be a standardized
> testbed for this work.  I've just committed the server assemblies under
> plugins/welcome.
>
> thanks
> david jencks
>
> On Nov 19, 2009, at 7:51 PM, Forrest Xia wrote:
>
>> Hi,
>>
>> I managed to locally make an assembly of tomcat-minimal successfully(of
>> cause, disabled some modules, such as hot-deploy, remote-deploy).
>>
>> But when I tried to start the server, I encounter a strange problem that I
>> can not figure out why. The problem is:
>>
>> When boot comes to plugin
>> "org.apache.geronimo.configs/tomcat6/3.0-SNAPSHOT/car", an
>>  java.util.MissingResourceException threw out. Full stack trace is:
>>
>> [*********************************       ]  83%  10s Starting
>> org.apache.ger...2009-11-20 11:13:40,920 ERROR [GBeanInstanceState] Error
>> while starting; GBean is now in the FAILED state:
>> abstractName="org.apache.geronimo.configs/tomcat6/3.0-SNAPSHOT/car?ServiceModule=org.apache.geronimo.configs/tomcat6/3.0-SNAPSHOT/car,j2eeType=GBean,name=TomcatServer"
>> org.apache.xbean.recipe.ConstructionException: Error invoking constructor:
>> public org.apache.catalina.connector.Connector(java.lang.String) throws
>> java.lang.Exception
>>    at
>> org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:962)
>>    at
>> org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
>>    at
>> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
>>    at
>> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
>>    at
>> org.apache.geronimo.tomcat.model.ConnectorType.getConnector(ConnectorType.java:595)
>>    at
>> org.apache.geronimo.tomcat.model.ServiceType.getService(ServiceType.java:278)
>>    at
>> org.apache.geronimo.tomcat.model.ServerType.build(ServerType.java:294)
>>    at
>> org.apache.geronimo.tomcat.TomcatServerGBean.<init>(TomcatServerGBean.java:132)
>>    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>> Method)
>>    at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>    at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>    at
>> org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:952)
>>    at
>> org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
>>    at
>> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
>>    at
>> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
>>    at
>> org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:917)
>>    at
>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:269)
>>    at
>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
>>    at
>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:125)
>>    at
>> org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:544)
>>    at
>> org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:385)
>>    at
>> org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:459)
>>    at
>> org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:223)
>>    at
>> org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:713)
>>    at
>> org.apache.geronimo.system.main.EmbeddedDaemon.doStartup(EmbeddedDaemon.java:149)
>>    at
>> org.apache.geronimo.system.main.EmbeddedDaemon.execute(EmbeddedDaemon.java:81)
>>    at org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:88)
>>    at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
>>    at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:32)
>> Caused by: java.util.MissingResourceException: Can't find bundle for base
>> name org.apache.catalina.connector.LocalStrings, locale en_US
>>    at
>> java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1521)
>>    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260)
>>    at java.util.ResourceBundle.getBundle(ResourceBundle.java:787)
>>    at
>> org.apache.tomcat.util.res.StringManager.<init>(StringManager.java:77)
>>    at
>> org.apache.tomcat.util.res.StringManager.<init>(StringManager.java:72)
>>    at
>> org.apache.tomcat.util.res.StringManager.getManager(StringManager.java:161)
>>    at
>> org.apache.catalina.connector.MapperListener.<init>(MapperListener.java:79)
>>    at org.apache.catalina.connector.Connector.<init>(Connector.java:266)
>>    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>> Method)
>>    at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>    at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>    at
>> org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:952)
>>    ... 29 more
>>
>> So I double check the catalina bundle(whose bundle id is 122 in my
>> assembly) and confirmed there are resource files for LocalStrings in the
>> jar. Its package is exported and imported properly in the bundle's MENIFEST
>> file. Just no LocalStrings_en_US.properties there. But I think, even the
>> local resource is not found, the default resource LocalStrings.properties
>> should be picked up.
>>
>> From the error msg, it does not happen as supposed to. However, I manually
>> add a resource file to the jar, stop osgi runtime, clear bundle cache, and
>> start the server again. The same problem is still there. Why? does the
>> caller bundle not see the resource from another bundle? I am confused.
>>
>> Here I also attached an active bundle list before the error happens for
>> reference.
>>
>> Hope someone can give me a light about it. My ideal goal is to have a
>> minimal tomcat assembly started without problems, so that I can try to
>> deploy a simple sample application to the runtime and see if it works.
>>
>> Thanks for any comments.
>>
>> Forrest
>>
>>
>> <startedbundles.txt>
>
>