Environment
Novell Sentinel
SUSE Linux Enterprise Server (SLES) 11
Situation
After installation of Sentinel 7.0 on a server everything looked
complete except that the web interface could never be reached on
its default port of TCP 8443. The firewall had a valid
exception for this port and packets were able to reach the server
for other services (SSH) ruling out a routing problem in their
environment.
Resolution
During startup TCP port 8443 never started listening though the
other ports all worked correctly. Looking in the server's log
file (server0.0.log specifically) the following error was
found:
Mon Jan 09 19:15:35 GMT 2012|SEVERE|Container Startup Thread|esecurity.base.ccs.proxy.ComponentElementProxy.activate
; Exception java.lang.reflect.InvocationTargetException; java.lang.RuntimeException; ; Caused by internal error: ObjID already
Searching with Google it was discovered that this happens with some services when the process cannot resolve the system's hostname. The documentation mentions a requirement to have the system able to resolve to itself by its hostname, often by adding a valid entry to the /etc/hosts file on the server itself; doing so resolved the issue. An example line follows for a server with hostname 'sentinelbox', DNS name 'sentinelbox.netiq.com' and IP address 10.1.1.1:
10.1.1.1 sentinelbox.netiq.com sentinelbox
Once the /etc/hosts file was modified correctly the Sentinel service was restarted and the web service's port was listening properly.
Mon Jan 09 19:15:35 GMT 2012|SEVERE|Container Startup Thread|esecurity.base.ccs.proxy.ComponentElementProxy.activate
; Exception java.lang.reflect.InvocationTargetException; java.lang.RuntimeException; ; Caused by internal error: ObjID already
Searching with Google it was discovered that this happens with some services when the process cannot resolve the system's hostname. The documentation mentions a requirement to have the system able to resolve to itself by its hostname, often by adding a valid entry to the /etc/hosts file on the server itself; doing so resolved the issue. An example line follows for a server with hostname 'sentinelbox', DNS name 'sentinelbox.netiq.com' and IP address 10.1.1.1:
10.1.1.1 sentinelbox.netiq.com sentinelbox
Once the /etc/hosts file was modified correctly the Sentinel service was restarted and the web service's port was listening properly.
Additional Information
Full Java Stack from server0.0.log file during startup of Sentinel
7.0:
Mon Jan 09 19:15:35 GMT 2012|SEVERE|Container Startup Thread|esecurity.base.ccs.proxy.ComponentElementProxy.activate
; Exception java.lang.reflect.InvocationTargetException; java.lang.RuntimeException; ; Caused by internal error: ObjID already in use; java.rmi.server.ExportException;
Mon Jan 09 19:15:35 GMT 2012|SEVERE|Container Startup Thread|esecurity.base.ccs.proxy.ComponentElementProxy.activate
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at esecurity.ccs.comp.webapp.WebappServerComponent.componentActivated(WebappServerComponent.java:85)
at esecurity.base.ccs.BasicComponent.activate(BasicComponent.java:227)
at esecurity.base.ccs.proxy.ComponentElementProxy.activate(ComponentElementProxy.java:141)
at esecurity.base.ccs.proxy.ComponentElementProxy.changeChildrenStatus(ComponentElementProxy.java:213)
at esecurity.base.ccs.proxy.ComponentElementProxy.activate(ComponentElementProxy.java:134)
at esecurity.base.ccs.proxy.ComponentElementProxy.componentStateChange(ComponentElementProxy.java:121)
at esecurity.base.ccs.services.ComponentListenerSupport.fireListenerChange(ComponentListenerSupport.java:74)
at esecurity.base.ccs.services.ComponentListenerSupport.fireListenerChange(ComponentListenerSupport.java:55)
at esecurity.base.ccs.services.ComponentServices.activateAllComponents(ComponentServices.java:65)
at esecurity.base.ccs.proxy.ContainerProxy.activateContainer(ContainerProxy.java:61)
at esecurity.util.service.ContainerService$1.run(ContainerService.java:82)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:752)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:377)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:329)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:285)
at esecurity.ccs.comp.webapp.WebappServerComponent.componentActivated(WebappServerComponent.java:81)
... 11 more
Caused by: java.rmi.server.ExportException: internal error: ObjID already in use
at sun.rmi.transport.ObjectTable.putTarget(Unknown Source)
at sun.rmi.transport.Transport.exportObject(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.exportObject(Unknown Source)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(Unknown Source)
at sun.rmi.transport.LiveRef.exportObject(Unknown Source)
at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
at sun.rmi.registry.RegistryImpl.setup(Unknown Source)
at sun.rmi.registry.RegistryImpl.<init>(Unknown Source)
at java.rmi.registry.LocateRegistry.createRegistry(Unknown Source)
at org.eclipse.jetty.jmx.ConnectorServer.startRegistry(ConnectorServer.java:163)
at org.eclipse.jetty.jmx.ConnectorServer.<init>(ConnectorServer.java:82)
... 20 more
Mon Jan 09 19:15:35 GMT 2012|SEVERE|Container Startup Thread|esecurity.base.ccs.proxy.ComponentElementProxy.activate
; Exception java.lang.reflect.InvocationTargetException; java.lang.RuntimeException; ; Caused by internal error: ObjID already in use; java.rmi.server.ExportException;
Mon Jan 09 19:15:35 GMT 2012|SEVERE|Container Startup Thread|esecurity.base.ccs.proxy.ComponentElementProxy.activate
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at esecurity.ccs.comp.webapp.WebappServerComponent.componentActivated(WebappServerComponent.java:85)
at esecurity.base.ccs.BasicComponent.activate(BasicComponent.java:227)
at esecurity.base.ccs.proxy.ComponentElementProxy.activate(ComponentElementProxy.java:141)
at esecurity.base.ccs.proxy.ComponentElementProxy.changeChildrenStatus(ComponentElementProxy.java:213)
at esecurity.base.ccs.proxy.ComponentElementProxy.activate(ComponentElementProxy.java:134)
at esecurity.base.ccs.proxy.ComponentElementProxy.componentStateChange(ComponentElementProxy.java:121)
at esecurity.base.ccs.services.ComponentListenerSupport.fireListenerChange(ComponentListenerSupport.java:74)
at esecurity.base.ccs.services.ComponentListenerSupport.fireListenerChange(ComponentListenerSupport.java:55)
at esecurity.base.ccs.services.ComponentServices.activateAllComponents(ComponentServices.java:65)
at esecurity.base.ccs.proxy.ContainerProxy.activateContainer(ContainerProxy.java:61)
at esecurity.util.service.ContainerService$1.run(ContainerService.java:82)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:752)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:377)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:329)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:285)
at esecurity.ccs.comp.webapp.WebappServerComponent.componentActivated(WebappServerComponent.java:81)
... 11 more
Caused by: java.rmi.server.ExportException: internal error: ObjID already in use
at sun.rmi.transport.ObjectTable.putTarget(Unknown Source)
at sun.rmi.transport.Transport.exportObject(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.exportObject(Unknown Source)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(Unknown Source)
at sun.rmi.transport.LiveRef.exportObject(Unknown Source)
at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
at sun.rmi.registry.RegistryImpl.setup(Unknown Source)
at sun.rmi.registry.RegistryImpl.<init>(Unknown Source)
at java.rmi.registry.LocateRegistry.createRegistry(Unknown Source)
at org.eclipse.jetty.jmx.ConnectorServer.startRegistry(ConnectorServer.java:163)
at org.eclipse.jetty.jmx.ConnectorServer.<init>(ConnectorServer.java:82)
... 20 more