Errors attempting to run embedded server
I'm attempting to launch a Tigase server from within my own java application. I've written similar code to what appears in tigase.server.XMPPServer#main to start the server (as recommended in this thread.) Also, I have moved the certs directory to be under my application's working directory. All of the tigase jars are in my classpath. When I run the application, it looks ok initially, but begins throwing exceptions after it starts loading the first plugin. Here's the bottom of my output (sorry for the very long cut and paste): -------------------------- 2008-08-18 14:28:24 ConfigRepository.getProperties() CONFIG: Looking for properties for basic-conf in node. 2008-08-18 14:28:24 ConfigRepository.getSubnodes() CONFIG: Adding subnode: logging 2008-08-18 14:28:24 ConfigRepository.getProperties() CONFIG: Found keys: [demo-mode] 2008-08-18 14:28:24 ConfigRepository.getProperties() CONFIG: In node : 'logging' found keys: [.level, handlers, java.util.logging.ConsoleHandler.formatter, java.util.logging.ConsoleHandler.level, java.util.logging.FileHandler.append, java.util.logging.FileHandler.count, java.util.logging.FileHandler.formatter, java.util.logging.FileHandler.level, java.util.logging.FileHandler.limit, java.util.logging.FileHandler.pattern, tigase.useParentHandlers] 2008-08-18 14:28:24 Configurator.setupLogManager() WARNING: DONE 2008-08-18 14:28:24 Configurator.setupLogManager() WARNING: DONE Loading plugin: jabber:iq:register ... java.lang.ExceptionInInitializerError at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at tigase.util.ClassUtil.getClassesFromNames(ClassUtil.java:127) at tigase.util.ClassUtil.getClassesFromClassPath(ClassUtil.java:163) at tigase.util.ClassUtil.getClassesImplementing(ClassUtil.java:191) at tigase.xmpp.ProcessorFactory.(ProcessorFactory.java:67) at tigase.server.xmppsession.SessionManager.addPlugin(SessionManager.java:717) at tigase.server.xmppsession.SessionManager.setProperties(SessionManager.java:811) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addComponent(MessageRouter.java:343) at tigase.server.MessageRouter.addRouter(MessageRouter.java:333) at tigase.server.MessageRouter.setProperties(MessageRouter.java:435) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:326) at tigase.server.MessageRouter.setConfig(MessageRouter.java:317) at TigaseServerTest.start_server(TigaseServerTest.java:27) at TigaseServerTest.main(TigaseServerTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) Caused by: java.lang.NullPointerException at com.sun.deploy.net.protocol.https.Handler$1.run(Handler.java:56) at java.security.AccessController.doPrivileged(Native Method) at com.sun.deploy.net.protocol.https.Handler.(Handler.java:43) ... 28 more java.lang.NullPointerException at com.sun.deploy.net.protocol.https.Handler$1.run(Handler.java:56) at java.security.AccessController.doPrivileged(Native Method) at com.sun.deploy.net.protocol.https.Handler.(Handler.java:43) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at tigase.util.ClassUtil.getClassesFromNames(ClassUtil.java:127) at tigase.util.ClassUtil.getClassesFromClassPath(ClassUtil.java:163) at tigase.util.ClassUtil.getClassesImplementing(ClassUtil.java:191) at tigase.xmpp.ProcessorFactory.(ProcessorFactory.java:67) at tigase.server.xmppsession.SessionManager.addPlugin(SessionManager.java:717) at tigase.server.xmppsession.SessionManager.setProperties(SessionManager.java:811) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addComponent(MessageRouter.java:343) at tigase.server.MessageRouter.addRouter(MessageRouter.java:333) at tigase.server.MessageRouter.setProperties(MessageRouter.java:435) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:326) at tigase.server.MessageRouter.setConfig(MessageRouter.java:317) at TigaseServerTest.start_server(TigaseServerTest.java:27) at TigaseServerTest.main(TigaseServerTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) java.lang.OutOfMemoryError: PermGen space at java.lang.Class.getName0(Native Method) at java.lang.Class.getName(Class.java:552) at tigase.util.ClassComparator.compare(ClassComparator.java:56) at tigase.util.ClassComparator.compare(ClassComparator.java:41) at java.util.TreeMap.put(TreeMap.java:530) at java.util.TreeSet.add(TreeSet.java:238) at tigase.util.ClassUtil.getClassesFromNames(ClassUtil.java:128) at tigase.util.ClassUtil.getClassesFromClassPath(ClassUtil.java:163) at tigase.util.ClassUtil.getClassesImplementing(ClassUtil.java:191) at tigase.xmpp.ProcessorFactory.(ProcessorFactory.java:67) at tigase.server.xmppsession.SessionManager.addPlugin(SessionManager.java:717) at tigase.server.xmppsession.SessionManager.setProperties(SessionManager.java:811) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addComponent(MessageRouter.java:343) at tigase.server.MessageRouter.addRouter(MessageRouter.java:333) at tigase.server.MessageRouter.setProperties(MessageRouter.java:435) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:326) at tigase.server.MessageRouter.setConfig(MessageRouter.java:317) at TigaseServerTest.start_server(TigaseServerTest.java:27) at TigaseServerTest.main(TigaseServerTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.findBootstrapClass(Native Method) at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:891) at java.lang.ClassLoader.loadClass(ClassLoader.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:299) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at tigase.util.ClassUtil.getClassesFromNames(ClassUtil.java:127) at tigase.util.ClassUtil.getClassesFromClassPath(ClassUtil.java:163) at tigase.util.ClassUtil.getClassesImplementing(ClassUtil.java:191) at tigase.xmpp.ProcessorFactory.(ProcessorFactory.java:67) at tigase.server.xmppsession.SessionManager.addPlugin(SessionManager.java:717) at tigase.server.xmppsession.SessionManager.setProperties(SessionManager.java:811) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addComponent(MessageRouter.java:343) at tigase.server.MessageRouter.addRouter(MessageRouter.java:333) at tigase.server.MessageRouter.setProperties(MessageRouter.java:435) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:326) at tigase.server.MessageRouter.setConfig(MessageRouter.java:317) at TigaseServerTest.start_server(TigaseServerTest.java:27) at TigaseServerTest.main(TigaseServerTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.findBootstrapClass(Native Method) at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:891) at java.lang.ClassLoader.loadClass(ClassLoader.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:299) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at tigase.util.ClassUtil.getClassesFromNames(ClassUtil.java:127) at tigase.util.ClassUtil.getClassesFromClassPath(ClassUtil.java:163) at tigase.util.ClassUtil.getClassesImplementing(ClassUtil.java:191) at tigase.xmpp.ProcessorFactory.(ProcessorFactory.java:67) at tigase.server.xmppsession.SessionManager.addPlugin(SessionManager.java:717) at tigase.server.xmppsession.SessionManager.setProperties(SessionManager.java:811) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addComponent(MessageRouter.java:343) at tigase.server.MessageRouter.addRouter(MessageRouter.java:333) at tigase.server.MessageRouter.setProperties(MessageRouter.java:435) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:326) at tigase.server.MessageRouter.setConfig(MessageRouter.java:317) at TigaseServerTest.start_server(TigaseServerTest.java:27) at TigaseServerTest.main(TigaseServerTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.findBootstrapClass(Native Method) at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:891) at java.lang.ClassLoader.loadClass(ClassLoader.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:299) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at tigase.util.ClassUtil.getClassesFromNames(ClassUtil.java:127) at tigase.util.ClassUtil.getClassesFromClassPath(ClassUtil.java:163) at tigase.util.ClassUtil.getClassesImplementing(ClassUtil.java:191) at tigase.xmpp.ProcessorFactory.(ProcessorFactory.java:67) at tigase.server.xmppsession.SessionManager.addPlugin(SessionManager.java:717) at tigase.server.xmppsession.SessionManager.setProperties(SessionManager.java:811) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addComponent(MessageRouter.java:343) at tigase.server.MessageRouter.addRouter(MessageRouter.java:333) at tigase.server.MessageRouter.setProperties(MessageRouter.java:435) at tigase.conf.Configurator.setup(Configurator.java:302) at tigase.conf.Configurator.componentAdded(Configurator.java:269) at tigase.conf.Configurator.componentAdded(Configurator.java:73) at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:58) at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:326) at tigase.server.MessageRouter.setConfig(MessageRouter.java:317) at TigaseServerTest.start_server(TigaseServerTest.java:27) at TigaseServerTest.main(TigaseServerTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: PermGen space Any help/input would be greatly appreciated! Thanks! Richard
Trackback URL for this post:
- Add new comment
- 876 reads






java.lang.OutOfMemoryError:
I think it explains everything.
Normally the Tigase server doesn't need lots of memory for running. But if you run it within another application, both applications share assigned memory. Therefore when you set memory allowance for JVM you have to consider needs of both applications.
On top of this memory consumption in Tigase may temporarily be increased at certain point.
When the Tigase server is starting it tries to load all available plugins. To do this it scans ALL classes found in the CLASSPATH to find ALL plugin implementations. If your classpath is big and you have lots of classes then loading plugins may consume lots of memory and may take long time. After all plugins are loaded the memory is released.
Therefore I would suggest first of all to try increase memory allowance for JVM for your application and also if possible remove all jars and classes from the CLASSPATH which are not really needed and not used.
I hope it helps, please let me know if you have any problems. To be honest this setup is not recommended and not supported but I can try to help you if possible.
Yikes, sorry for the lack of formatting there :( Hopefully you get the idea!
Richard