blob: 1fc101a3a36f366c958a3ea2f04a9492ed18f42f [file] [log] [blame]
<!--
Copyright (C) 2009-2014, JoshuaTree. All Rights Reserved.
Licensed to Joshua Tree Software, LLC under New BSD license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
JTS licenses this file to You under the New BSD License
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://joshuatreesoftware.us/
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html>
<head>
<title>Package Documentation for Java Sentry Websphere SPI</title>
</head>
<body>
<p>
This package is the component that allows security checks to be performed within a
Websphere runtime environment. The Websphere Java Sentry has been split into two packages each contained within
its own jar file.
The Websphere Sentry Jars include:
<ol>
<li>fortressProxyWebSphere-[version].jar</li>
<li>fortressSentry-[version].jar and configuration artifacts</li>
</ol>
The fortressProxyWebSphere jar is a thin layer of code that calls the fortressSentry implementation code via standard
Java URLClassloader logic. The Fortress implementation code and configuration artifacts must remain separate from
Websphere's runtime system classpath. The rationale for separation is it necessary to allow a
predictable and repeatable installation process as throwing non-native jars on any application server
system classpath contains risk due to variability of the runtime environment itself.
To put it simply, it is to keep Fortress code out of the application server's visibility which means
setting up Fortress in Websphere will work every time if the instructions are followed faithfully.
</p>
<h3>JoshuaTree Java Sentry Websphere UserRegistry Setup Notes</h3>
This installation document contains instructions for installing the Fortress Websphere UserRegistry component. This component works
in Websphere 5,6,7.
<h4>Guidelines & Tips</h4>
<ul>
<li>In the document that follows, replace <em>[version]</em> with Fortress version label. For example - if Fortress <em>1.0.0</em> release, change fortressProxyWebsphere-<em>[version]</em>.jar to fortressProxyWebsphere-<em>1.0.0</em>.jar</li>
<li>Restart Websphere server after any changes to Websphere config, Fortress config or lib files.</li>
<li>You (usually) do NOT need to restart Websphere after changes to the LDAP data, i.e. users, passwords, roles.</li>
<li>Steps I - III below are mandatory.</li>
<li>Step IV is optional, for testing purposes.</li>
<li>Common misconfiguration issues related to Fortress, LDAP and Websphere are located in section V.</li>
</ul>
</p>
<ol type="I">
<li>
<h3>Instructions to extract Fortress Java Sentry Package to Target System</h3>
<ol type="A">
<li>Copy fortressSentryDist-[version].zip to hard drive on target server env.</li>
<li>Extract the zip. The location for archive can vary according to requirements. The location for package will be referred to as "FORTRESS_HOME" later in these instructions.</li>
</ol>
</li>
<li>
<h3>Instructions to configure Fortress Java Sentry to use Target System LDAP</h3>
Note: the <b>dist</b> Ant target on this project will use settings contained within the <b>build.properties</b> file contained within the root folder of this component and replace substitution params contained within <em>fortress.properties.src</em> and create new <em>fortress.properties</em> file automatically.<br><br>
<ol type="A">
<li>Edit the FORTRESS_HOME properties file located in $FORTRESS_HOME/conf/fortress.properties. If you did not run Ant <b>dist</b> target you will need to create using <em>fortress.properties.src</em>
<font size="3" color="#000000"><pre>vi /home/user/fortressSentry-1.0.0/conf/fortress.properties</pre></font>
</li>
<li>
Set the LDAP Host name (or IP) and port properties:
<font size="3" color="#000000">
<pre>
host=myldaphostname
port=389
</pre>
</font>
</li>
<li>
Set the LDAP admin creds:
<font size="" color="#000000"><pre>
admin=cn=Manager\,dc=jts\,dc=com
adminPw=secret
</pre>
</font> </li>
<li>
Set the LDAP connection pool info:
<font size="3" color="#000000"><pre>
minUserConn=1
maxUserConn=10
minConn=1
maxConn=10
</pre>
</font> <em>note: the min/max will vary according to anticipated load on your Websphere server. For busy systems, the max number of
ldap connections may be much higher.</em><br><br>
</li>
</ol>
</p>
</li>
<li>
<h3>Instructions to configure Websphere to use Fortress Java Sentry</h3>
<ol type="A">
<li>Load the Proxy jar onto server classpath (WEBSPHERE_HOME/lib).
Copy the proxy jar located, FORTRESS_HOME/proxy/fortressProxyWebsphere-[version].jar to the Websphere Server's lib folder.
<font size="3" color="#000000"> <pre>
/opt/IBM/Websphere/AppServer/lib$ sudo cp /home/user/fortressSentry-1.0.0/proxy/fortressProxyWebsphere-1.0.0.jar .
</pre>
</font> </li>
<em>note: This is the only Fortress binary or configuration artifact that will reside directly on Websphere's server classpath.</em><br><br>
</p>
<li>Restart the application server.</li>
<font size="3" color="#000000"> <pre>
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh server1 -profileName AppSrv01
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh server1 -profileName AppSrv01
</pre>
</font> <li>Go to Websphere Admin Console, i.e.: </li>
<font size="3" color="#000000"><pre>https://localhost:9043/ibm/console/logon.jsp</pre></font>
<li>Navigate to Global Security Page: <em>Security->GlobalSecurity</em></li>
<li>Select dropdown: <em>Available realm definitions</em>: <em>Standalone custom registry</em></li>
<li>Click on <em>Configure</em> button</li>
<li>Enter <em>Primary administrative user name</em> : <strong>wasadmin</strong></li>
<li>Select Radio button: <em>Server identity that is stored in the repository</em></li>
<li>Enter in field: <em>Server user ID or administrative user on a Version 6.0.x node</em> : <strong>wasadmin</strong> (or whatever you choose as your default console userId)./li>
<li>Enter in field: <em>Password</em> : <strong>@dmin123</strong> (or whatever you choose as your default consle user's password)</li>
<li>Enter in field: <em>Information required Custom registry class name</em> : <strong>us.jts.sentry.websphere.WsAccessMgrProxy</strong></li>
<li>Enable checkbox: <em>Ignore case for authorization</em></li>
<li>Enter in field: <em>Custom properties</em>" :</li>
<font size="3" color="#000000"> <pre>
<em>Name</em> <strong>REALM_CLASSPATH</strong> <em>Value</em> <strong>/home/user/fortressSentryDist-1.0.0/conf:/home/user/fortressSentryDist-1.0.0/lib/fortressSentry-1.0.0.jar</strong>
</pre>
</font> <li>Click on <em>Apply</em> button.</li>
<li>Click on <em>Save directly to the master configuration.</em> link.</li>
<li>Navigate back to <em>Global security</em> page by clicking on link of same name.</li>
<li>Enable checkbox: <em>Enable application security</em></li>
<li>Do <strong>NOT</strong> enable: <em>Use Java 2 security to restrict application access to local resources</em></li>
<li>For dropdown <em>Available realm definitions</em> select: <em>Standalone custom registry</em> and click on <em>Set as current</em> button.</li>
<li>Click on <em>Apply</em> button</li>
<br><em>Note: If you are going to have errors enabling Fortress as security manager, this is where it occurs.<br>
If no errors continue to next step, else go to Troubleshooting section of this document to determine what went wrong.</em><br><br>
<li>Click on <em># Save directly to the master configuration.</em> link.</li>
<li>Restart Webshere server:</li>
<font size="3" color="#000000"> <pre>
/opt/IBM/WebSphere/AppServer/bin$ ./stopServer.sh server1 -profileName AppSrv01
/opt/IBM/WebSphere/AppServer/bin$ ./startServer.sh server1 -profileName AppSrv01
</pre>
</font>
<li>Verify that sentry started successfully by viewing following message in Websphere's log:</li>
<font size="3" color="#000000"> <pre>
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1$ tail -f -n10000 SystemOut.log
...
[6/5/11 18:46:16:745 CDT] 00000000 SystemOut O 2011-06-05 18:46:16,744 (INFO ) J2eePolicyMgrImpl - Initialized successfully
[6/5/11 18:46:16:745 CDT] 00000000 WsAccessMgrPr I us.jts.sentry.websphere.WsAccessMgrProxy.initialize - Fortress UserRegistry initialized no errors.
[6/5/11 18:46:16:748 CDT] 00000000 SystemOut O 2011-06-05 18:46:16,748 (INFO ) WsAccessMgrImpl. J2EE policy agent initialization successful
[6/5/11 18:46:16:759 CDT] 00000000 UserRegistryI A SECJ0136I: Custom Registry:us.jts.sentry.websphere.WsAccessMgrProxy has been initialized
</pre>
</font> </ol>
</p>
</li>
<em>If you made it this far without errors you are now ready to use Fortress enabled security in Websphere runtime environment.
If you need help understanding how Java EE security works, check out this link:
<br><a href="http://download.oracle.com/javaee/5/tutorial/doc/bnbwk.html">The Java EE 5 Tutorial</a></em><br>
<li>
<h3>Instructions to test Websphere Security</h3>
<ol type="A">
<li>logon to admin console: </li>
<font size="3" color="#000000"><pre>https://localhost:9043/ibm/console/logon.jsp</pre></font>
<li>enter creds: wasadmin/@dmin123</li>
<li>Verify you get in successfully and can access Websphere Admin Console functions.</li>
</ol>
</p>
</li>
<li>
<h3>Common Troubleshooting Tips</h3>
<ol type="A">
<li>Server can't find config files (realmClasspath="/fortressSentry-1.0.0/conf/")
<h4>Error</h4>
<font size="3" color="#000000"> <pre>
[6/6/11 18:33:44:556 CDT] 00000000 WsAccessMgrPr W WsAccessMgrProxy.getRealmImplClassname - REALM_IMPLEMENTATION default=WsAccessMgrImpl
[6/6/11 18:33:44:572 CDT] 00000000 CpUtil I CpUtil.parseRealmClasspath </home/smckinn/JavaTools/sentry/fortressSentryDist-1.0.0-rc1/conf:/home/smckinn/JavaTools/sentry/fortressSentryDist-1.0.0-rc1/lib/fortressSentry-1.0.0-rc1.jar>
[6/6/11 18:33:44:575 CDT] 00000000 CpUtil I CpUtil.parseRealmClasspath path0 <file:/home/smckinn/JavaTools/sentry/fortressSentryDist-1.0.0-rc1/conf>
[6/6/11 18:33:44:578 CDT] 00000000 CpUtil I CpUtil.parseRealmClasspath path1 <file:/home/smckinn/JavaTools/sentry/fortressSentryDist-1.0.0-rc1/lib/fortressSentry-1.0.0-rc1.jar>
[6/6/11 18:33:44:581 CDT] 00000000 WsAccessMgrPr I WsAccessMgrProxy.initialize - instantiate class: WsAccessMgrImpl
[6/6/11 18:33:44:854 CDT] 00000000 FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/ffdc/server1_76887688_11.06.06_18.33.44.817562839570554853342.txt null 484
[6/6/11 18:33:44:871 CDT] 00000000 ContainerHelp E WSVR0501E: Error creating component null [class com.ibm.ws.security.core.SecurityComponentImpl]
java.lang.ExceptionInInitializerError
at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
at J2eePolicyMgrFactory.<clinit>(J2eePolicyMgrFactory.java:32)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
at WsAccessMgrImpl.<clinit>(WsAccessMgrImpl.java:41)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
at java.lang.J9VMInternals.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1325)
at WsAccessMgrProxy.initialize(WsAccessMgrProxy.java:60)
at com.ibm.ws.security.registry.UserRegistryImpl.initialize(UserRegistryImpl.java:260)
at com.ibm.ws.security.config.UserRegistryConfigImpl.do_createRegistryObjects(UserRegistryConfigImpl.java:680)
at com.ibm.ws.security.config.UserRegistryConfigImpl.createRegistryObjects(UserRegistryConfigImpl.java:637)
at com.ibm.ws.security.config.UserRegistryConfigImpl.getUserRegistryImpl(UserRegistryConfigImpl.java:622)
at com.ibm.ws.security.core.distSecurityComponentImpl.bindRegistry(distSecurityComponentImpl.java:509)
at com.ibm.ws.security.core.distSecurityComponentImpl.bindRegistries(distSecurityComponentImpl.java:486)
at com.ibm.ws.security.core.distSecurityComponentImpl.start(distSecurityComponentImpl.java:434)
at com.ibm.ws.security.core.SecurityComponentImpl.start(SecurityComponentImpl.java:104)
at com.ibm.ws.runtime.component.ContainerHelper.startComponents(ContainerHelper.java:538)
at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:627)
at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:618)
at com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:503)
at com.ibm.ws.runtime.WsServerImpl.bootServerContainer(WsServerImpl.java:298)
at com.ibm.ws.runtime.WsServerImpl.start(WsServerImpl.java:214)
at com.ibm.ws.runtime.WsServerImpl.main(WsServerImpl.java:666)
at com.ibm.ws.runtime.WsServer.main(WsServer.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at com.ibm.wsspi.bootstrap.WSLauncher.launchMain(WSLauncher.java:213)
at com.ibm.wsspi.bootstrap.WSLauncher.main(WSLauncher.java:93)
at com.ibm.wsspi.bootstrap.WSLauncher.run(WSLauncher.java:74)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:340)
at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
at org.eclipse.core.launcher.Main.run(Main.java:981)
at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:340)
at com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:110)
Caused by: us.jts.fortress.ConfigurationRuntimeException: us.jts.fortress.configuration.Config static init: Error loading from configuration file: [oamConfig.xml] Exception=java.lang.RuntimeException: us.jts.fortress.configuration.Config static init: Error, null configuration file: oamConfig.xml, errCode=127
at us.jts.fortress.configuration.Config.<clinit>(Config.java:95)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
... 46 more
Caused by: java.lang.RuntimeException: us.jts.fortress.configuration.Config static init: Error, null configuration file: oamConfig.xml
at us.jts.fortress.configuration.Config.<clinit>(Config.java:52)
... 48 more
6/6/11 18:34:01:566 CDT] 00000000 WsServerImpl A WSVR0002I: Server server1 open for e-business, problems occurred during startup
</pre>
</font>
<h4>Corrective Action</h4>
<pre>
<em>Ensure step III.M points to Fortress sentry configuration folder.</em>
</pre>
</li>
<li>Server can't find proxy jar (Realm className="WsAccessMgrProxy")
<h4>Error</h4>
<font size="3" color="#000000"> <pre>
com.ibm.ws.security.registry.UserRegistryImpl.initialize 253
[6/6/11 18:40:06:982 CDT] 00000000 UserRegistryI E SECJ0330E: The registry implementation file us.jts.sentry.websphere.WsAccessMgrProxy cannot be loaded because of the following exception java.lang.ClassNotFoundException: us.jts.sentry.websphere.WsAccessMgrProxy
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.ibm.ws.security.registry.UserRegistryImpl.initialize(UserRegistryImpl.java:224)
at com.ibm.ws.security.config.UserRegistryConfigImpl.do_createRegistryObjects(UserRegistryConfigImpl.java:680)
at com.ibm.ws.security.config.UserRegistryConfigImpl.createRegistryObjects(UserRegistryConfigImpl.java:637)
at com.ibm.ws.security.config.UserRegistryConfigImpl.getUserRegistryImpl(UserRegistryConfigImpl.java:622)
at com.ibm.ws.security.core.distSecurityComponentImpl.bindRegistry(distSecurityComponentImpl.java:509)
at com.ibm.ws.security.core.distSecurityComponentImpl.bindRegistries(distSecurityComponentImpl.java:486)
at com.ibm.ws.security.core.distSecurityComponentImpl.start(distSecurityComponentImpl.java:434)
at com.ibm.ws.security.core.SecurityComponentImpl.start(SecurityComponentImpl.java:104)
at com.ibm.ws.runtime.component.ContainerHelper.startComponents(ContainerHelper.java:538)
at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:627)
at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:618)
at com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:503)
at com.ibm.ws.runtime.WsServerImpl.bootServerContainer(WsServerImpl.java:298)
at com.ibm.ws.runtime.WsServerImpl.start(WsServerImpl.java:214)
at com.ibm.ws.runtime.WsServerImpl.main(WsServerImpl.java:666)
at com.ibm.ws.runtime.WsServer.main(WsServer.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at com.ibm.wsspi.bootstrap.WSLauncher.launchMain(WSLauncher.java:213)
at com.ibm.wsspi.bootstrap.WSLauncher.main(WSLauncher.java:93)
at com.ibm.wsspi.bootstrap.WSLauncher.run(WSLauncher.java:74)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:340)
at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
at org.eclipse.core.launcher.Main.run(Main.java:981)
at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:340)
at com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:110)
</pre>
</font> Server fails to launch.
<h4>Corrective Action</h4>
<pre>
<em>Ensure step III.A copied the Fortress sentry proxy jar to /opt/IBM/Websphere/AppServer/lib folder.</em>
</pre>
</li>
<li>Server can't find binaries (realmClasspath="...FORTRESS_HOME/lib/fortressSentry-[version].jar")
<h4>Error</h4>
<font size="3" color="#000000"> <pre>
[6/6/11 18:48:02:471 CDT] 00000000 WsAccessMgrPr I us.jts.sentry.websphere.WsAccessMgrProxy.initialize - instantiate class: WsAccessMgrImpl
[6/6/11 18:48:02:474 CDT] 00000000 WsAccessMgrPr E us.jts.sentry.websphere.WsAccessMgrProxy.initialize ClassNotFoundException=java.lang.ClassNotFoundException: WsAccessMgrImpl
[6/6/11 18:48:02:508 CDT] 00000000 UserRegistryI E SECJ0331E: The registry implementation file us.jts.sentry.websphere.WsAccessMgrProxy cannot be initialized because of the following exception com.ibm.websphere.security.CustomRegistryException: us.jts.sentry.websphere.WsAccessMgrProxy.initialize ClassNotFoundException=java.lang.ClassNotFoundException: WsAccessMgrImpl
at us.jts.sentry.websphere.WsAccessMgrProxy.initialize(WsAccessMgrProxy.java:78)
at com.ibm.ws.security.registry.UserRegistryImpl.initialize(UserRegistryImpl.java:260)
at com.ibm.ws.security.config.UserRegistryConfigImpl.do_createRegistryObjects(UserRegistryConfigImpl.java:680)
at com.ibm.ws.security.config.UserRegistryConfigImpl.createRegistryObjects(UserRegistryConfigImpl.java:637)
at com.ibm.ws.security.config.UserRegistryConfigImpl.getUserRegistryImpl(UserRegistryConfigImpl.java:622)
at com.ibm.ws.security.core.distSecurityComponentImpl.bindRegistry(distSecurityComponentImpl.java:509)
at com.ibm.ws.security.core.distSecurityComponentImpl.bindRegistries(distSecurityComponentImpl.java:486)
at com.ibm.ws.security.core.distSecurityComponentImpl.start(distSecurityComponentImpl.java:434)
at com.ibm.ws.security.core.SecurityComponentImpl.start(SecurityComponentImpl.java:104)
at com.ibm.ws.runtime.component.ContainerHelper.startComponents(ContainerHelper.java:538)
at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:627)
at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:618)
at com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:503)
at com.ibm.ws.runtime.WsServerImpl.bootServerContainer(WsServerImpl.java:298)
at com.ibm.ws.runtime.WsServerImpl.start(WsServerImpl.java:214)
at com.ibm.ws.runtime.WsServerImpl.main(WsServerImpl.java:666)
at com.ibm.ws.runtime.WsServer.main(WsServer.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at com.ibm.wsspi.bootstrap.WSLauncher.launchMain(WSLauncher.java:213)
at com.ibm.wsspi.bootstrap.WSLauncher.main(WSLauncher.java:93)
at com.ibm.wsspi.bootstrap.WSLauncher.run(WSLauncher.java:74)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:340)
at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
at org.eclipse.core.launcher.Main.run(Main.java:981)
at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:340)
at com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:110)
</pre>
</font> Server fails to launch
<h4>Corrective Action</h4>
<pre>
<em>Ensure step III.M configuration points fortressSentry jar,
i.e. FORTRESS_HOME/lib/fortressProxyWebsphere[version].jar.</em>
</pre>
</li>
</ol>
</p>
</li>
</ol>
</body>
</html>