Mostrando entradas con la etiqueta websphere. Mostrar todas las entradas
Mostrando entradas con la etiqueta websphere. Mostrar todas las entradas

sábado, 4 de octubre de 2025

10 Years Later: The Hell and Glory of Installing FileNet Daeja Viewer


10 Years Later: The Hell and Glory of Installing FileNet Daeja Viewer

Back in 2015 I had to pull off one of those invisible masterpieces that leave a mark in your career: building IBM FileNet P8 + Content Navigator + Daeja Viewer from scratch, on top of Windows Server, WebSphere, DB2, and Active Directory.

It wasn’t plug-and-play. I went through 100+ virtual machines, breaking and rebuilding, until LDAP, JAAS, CE, ICN, and DB2 finally came together. While some colleagues said “this is too difficult,” I was neck deep in LDAPS, certificates, Kerberos SPNs, WebSphere JVM tuning, and those endless logs that only make sense at 3 a.m. After many sleepless nights, the system finally went live in Sydney, Darling Harbour.






The Number One Enemy: Daeja ViewOne

This viewer was both hated and necessary. Without it, PDFs and TIFFs would not render at all. Typical WebSphere log error looked like this:


[5/18/15 11:01:32:341 BDT] 000000cd LocalTranCoor E   
WLTC0017E: Resources rolled back due to setRollbackOnly()

FNRAC1008E: Unable to get data from server

[FNRPE0911843060E] Error executing the CA RPC call configEventExportStoreProperties
Root cause: java.lang.NullPointerException

Translation: the viewer was trying to fetch Content Engine configuration and died with a NullPointerException. If you didn’t know how to read between the lines, you could be stuck for days.


The Classic jiServerException Bug

Sometimes, when opening a TIFF in ICN, you’d hit this random error:


ji.net.jiServerException: Server did not respond with OK
Error: IO error: null

Open the same document a second time — and suddenly it worked. Root cause? HttpOnly cookies in WebSphere. IBM documented this years later, but back then it was all about trial and error.

Fix (WebSphere 8+):

  1. Go to Servers > Server Types > WebSphere Application Servers > Session Management.
  2. Uncheck Set session cookies to HTTPOnly.
  3. Go to Global Security > Web and SIP Security > Single Sign-On (SSO).
  4. Uncheck Set security cookies to HTTPOnly.
  5. Restart the node.

And finally, Daeja would behave.


LDAP / Active Directory: The Real Challenge

Authentication was a nightmare if you didn’t master LDAP + Kerberos. These snippets saved my life back then:

SPN for the service account:


setspn -S HTTP/filenet-appsrv DOMAIN\svc-fn-was
setspn -S HTTP/filenet-appsrv.domain.local DOMAIN\svc-fn-was

Optimized LDAP filters:


(&(objectClass=user)
  (!(userAccountControl:1.2.840.113556.1.4.803:=2))
  (|(memberOf=CN=FN_Users,OU=Groups,DC=domain,DC=local)
    (memberOf=CN=ICN_Users,OU=Groups,DC=domain,DC=local)))

Testing LDAPS from PowerShell:


Test-NetConnection -ComputerName dc01.domain.local -Port 636

Lessons of a Mexican Engineer in Sydney 🇲🇽🌏

Looking back, I see that work as an invisible masterpiece. Nobody documented the fine-tuned configs I made, but that environment likely kept running 10 years later.

What I learned:

  • FileNet was never for “manual installers” — it was for engineers who understood the guts of the system.
  • Many of the fixes we discover at 3 a.m. never make it into IBM’s official manuals, yet they keep mission-critical systems alive.
  • And yes: Mexicans can leave a mark anywhere — even in Darling Harbour.



#FileNet #IBMFileNet #ContentNavigator #DaejaViewer #WebSphere #DB2 #ECM #EnterpriseContentManagement #LDAP #ActiveDirectory #Kerberos #JavaEE #WAS #IBMCloudPak #SystemIntegration


Sydney will always remain more than just a project site for me. While others enjoyed Darling Harbour’s sunsets and the lights of the Opera House, I was deep in WebSphere logs, LDAP filters, and NullPointerExceptions. Yet, in between sleepless nights and 100+ virtual machines rebuilt from scratch, I felt the same energy of the city itself — resilient, alive, and relentless.

Ten years later, I look back and realize that my work was not only lines of code or system configs, but a piece of me left in that harbor, quietly running inside servers that still power critical processes. Sydney gave me sleepless nights, but also the memory that Mexican engineers can leave a mark anywhere in the world.


Español
Sídney siempre será mucho más que un simple lugar de proyecto para mí. Mientras otros disfrutaban de los atardeceres en Darling Harbour y las luces de la Ópera, yo estaba sumergido en logs de WebSphere, filtros LDAP y NullPointerExceptions. Sin embargo, entre desveladas y más de 100 máquinas virtuales reconstruidas desde cero, sentí la misma energía de la ciudad: resiliente, viva y persistente.

Diez años después, miro hacia atrás y me doy cuenta de que mi trabajo no fueron solo líneas de código o configuraciones de sistema, sino una parte de mí que quedó en ese puerto, corriendo en silencio dentro de servidores que aún sostienen procesos críticos. Sídney me dio noches sin dormir, pero también el recuerdo de que los ingenieros mexicanos podemos dejar huella en cualquier lugar del mundo.

miércoles, 29 de julio de 2015

[Tutorials] How to set up a horizontal cluster for a Maximo sandbox using WebSphere Application Server 7

[Tutorials] How to set up a horizontal cluster for a Maximo sandbox using WebSphere Application Server 7




[Tutorials] How to set up a horizontal cluster for a Maximo sandbox using WebSphere Application Server 7
Introduction
As described in WebSphere Application Server Information Center: “Clusters are groups of servers that are managed together and participate in workload management. A cluster can contain nodes or individual application servers. Clusters are responsible for balancing workload among servers. Servers that are a part of a cluster are called cluster members. When you install an application on a cluster, the application is automatically installed on each cluster member. You can configure a cluster to provide workload balancing with service integration or with message driven beans in the application server.

There are two types of clustering: horizontal and vertical. Both of them can be configured in different ways. This document is a guide that shows the easiest version of a horizontal cluster for a Maximo sandbox using WebSphere Application Server 7 (WAS). 

Benefits of a horizontal cluster environment:
  • High availability;
  • Load balance;
  • Performance improvement. 

Pre-requirements

This tutorial is based on WebSphere Application Server 7 and Maximo 7.5. Some specifics steps may differ from version to version, but the overall process is the same.

The user required to execute this tutorial must have administrative privileges in WAS to create nodes, clusters, start and stop servers, among other things.

To simplify the configuration of the horizontal cluster provided by this guide, no directory information services (LDAP), such as IBM Tivoli Directory Server or Microsoft Active Directory, were installed or configured.

It is also necessary to have at least two machines for the horizontal cluster. One of them must have Maximo successfully deployed. The other must have only an Application Server installed, with no Deployment Manager (DM). In order to improve performance of your environment, you may install the database or deployment management in separate machines.

The standalone Application Server that you want to federate must be up and running before starting this guide. 

After executing this guide, you should have a horizontal cluster environment similar to the image below: 
image
Note: This guide requires readers to have basic WAS and Maximo platform knowledge.
Adding a node
1. Login to the WAS admin console as wasadmin (Maximo server / WAS with DM).
2. Navigate to System administration > Nodes.
3. Click Add Node.
4. Select Managed Node.
5. Click Next.
6. On the next page, provide all the information about the Node you want to federate: 

image
7. Click OK.
8. On the next page, it will give an option to run the node as a Windows Service. Do not select this option and click OK.
9. The creation node process will start and the logs will be displayed.
10. Once the process has finished, you should see two nodes: one from cell 1 and another for cell 2 that you have just added.
image
11. If the nodes are not synchronized, select nodes 1 and 2 and click Synchronize.
12. At this point, you will no longer be able to login to WAS from cell 2 since it is now managed by the Deployment Manager.
 Creating the cluster
1. Navigate to Servers > Clusters > WebSphere application server clusters.
2. Click New.
3. On the next page, enter a Cluster Name (e.g. MaximoCluster).
4. Select Prefer local, if it is not selected already.
5. Click Next.
6. On the Create first cluster member page, enter a member name (e.g. cluster_member_1).
7. Select Node 1.
8. Select Generate unique HTTP ports, if it is not selected already.
9. Select Create the member using an existing application server as a template > MXServer.
10. Click Next.
11. On the next page, add another member to the cluster (e.g. cluster_member_2).
12. Select Node 2.
13. Select Generate unique HTTP ports, if it is not selected already.
14. Click Add Member.
15. Click Next and Finish.
16. Your cluster is down at this point but it will be started later.
image Creating new ports
1. Navigate to Environment > Virtual hosts.
2. Select maximo_host.
3. Click New and enter the following:
Host Name: *
Port: 9081

4. Click OK and save changes.
5. Create more ports if needed. 
 Deploying Maximo
1. Navigate to Servers > Server Types > WebSphere application servers.
2. Select MXServer and the server from cell 2, if not stopped yet, and click Stop.
image
3. Navigate to Applications > Application Types > WebSphere enterprise applications.
4. You should see the Maximo installed but it is not running in the cluster yet.
5. Select Maximo and click Uninstall.
6. Click Install.
7. Select the maximo.ear file. 
8. Click Next.
9. Select Fast Path.
10. On the Step 1 page, select Deploy web services and click Next.
11. On the Step 2 page, hold Ctrl key and select MAXIMOCLUSTER and webserver1 from Cluster and servers section.
12. Select all the modules and click Apply
image
13. Click Next.
14. On Step 3, select all the Web modules with maximo_host as Virtual host.
15. Click Next and Finish.
16. You should have Maximo deployed in the cluster at this point.
Starting the Cluster 
1. Navigate to Servers > Clusters > WebSphere application server clusters.
2. Select MaximoCluster and click Start. The cluster might take several minutes to start.
3. Navigate to Servers > Server Types > WebSphere application servers. 
image
4. The cluster members should be up and running.
5. Navigate to Applications > Application Types > WebSphere enterprise applications.
6. Verify that Maximo should also be running at this point.
image
7. Navigate to Environment > Update global Web server plug-in configuration.
8. Click OK.
9. At this point, you should be able to login to Maximo.
Testing the Cluster
To ensure that the cluster configuration is working properly, execute the following steps:

1. Navigate to Servers > Server Types > WebSphere application servers.
2. Stop cluster_member_1.
3. You should be able to login to Maximo even when one of the cluster members is down.
4. Start  cluster_member_1.
5. Stop cluster_member_2.
6. You should be able to login to Maximo even when one of the cluster members is down.
7. Start  cluster_member_2


Tags:  maximo cluster websphere desk was control sccd smartcloud

jueves, 11 de junio de 2015

HOW TO FIX A JDBC ERROR IN WAS SERVER websphere application server 8.5.5



WHEN YOU HAVE THE FOLLOWING ERROR IN WEBSPHERE APPLICATION SERVER V8.5.5:

[6/11/15 22:00:43:918 PDT] 00000069 SQLServerConn E   Java Runtime Environment (JRE) version 1.6 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
[6/11/15 22:00:43:918 PDT] 00000069 DataSourceCon E   DSRA8040I: Failed to connect to the DataSource.  Encountered "": java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.6 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:304)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:620)




SOLUTION:

FIRST: VERIFY THE FOLLOWING CONFIGURATION IN THE JDBC DRIVER:
AS FOLLOWS:


open the environment variables and set the folder here as follows:

verify the connection test the connection, we are using Java JRE 1.6


Then you need to verify the systemout.log of the was server

SYSTEMOUT.log

FINALLY THE VALIDATION:
***************************************
[6/11/15 22:10:35:408 PDT] 00000067 DSConfigurati I   DSRA8205I: JDBC driver name  : Microsoft SQL Server JDBC Driver 3.0
[6/11/15 22:10:35:408 PDT] 00000067 DSConfigurati I   DSRA8206I: JDBC driver version  : 3.0.1301.101
[6/11/15 22:10:35:408 PDT] 00000067 DSConfigurati I   DSRA8025I: Successfully connected to DataSource.
[6/11/15 22:10:35:439 PDT] 00000067 DSConfigurati I   DSRA8203I: Database product name : Microsoft SQL Server



THE CONNECTION WAS SUCCESFULL, IS MIPORTANT TO NOTE TO USE JDBC DRIVER 3 NOT 4

jueves, 4 de junio de 2015

Unable to Login to WebSphere Console after enabling LDAP Security Technote (troubleshooting)

http://www-01.ibm.com/support/docview.wss?uid=swg21404357

Problem(Abstract)

Enabling Global Security in WebSphere as part of the Application Server Security setup the Administrator is no
longer able to log in to the WebSphere Administrative Console after restarting WebSphere services.

Cause

The WebSphere Security mechanism is not able to validate any user credentials due to incorrect configuration
of the Global Security settings.

Environment

This document only applies to customers using IBM WebSphere version 6.0.x or 6.1 as their Application
Server. If there is no active connection to the Directory Server configured in WebSphere,
this issue may occur as well.

Resolving the problem

To temporarily disable Global Security in WebSphere perform the following tasks.

-Stop all WebSphere services if they are running. If the services will not stop, this is likely due to the
Global Security being enabled, you will need to restart the server after making these changes.
-Locate and edit the Security.xml files in the following directories:
\..\WebSphere\AppServer\profiles\<maximo_profile_name>\config\cells\<cell_name>\security.xml
and
\..\WebSphere\AppServer\profiles\<dmgr_profile_name>\config\cells\<cell_name>\security.xml
In a text editor, on line 2 of the XML file, locate the following text:
useLocalSecurityServer="true" useDomainQualifiedUserNames="false" enabled="true" cacheTimeout="600"

Change both useLocalSecurityServer and enabled to "false":

useLocalSecurityServer="false" useDomainQualifiedUserNames="falseenabled="false" cacheTimeout="600"

Save the files then start the WebSphere Services or Restart the Server.

When the WebSphere services are restarted, you will be able to access the console with any username. This allows any incorrect configurations to be changed and re-tested.

Ensure that these file changes are reverted once the issue is resolved.

domingo, 17 de mayo de 2015

WAS troubleshooting

[5/18/15 11:01:32:341 BDT] 000000cd LocalTranCoor E   WLTC0017E: Resources rolled back due to setRollbackOnly() being called.
 Error
FNRAC1008E
Unable to get data from server

User response: Check the error details for more information and contact IBM Software Support if necessary.

Exception details:
[FNRPE0911843060E]Error executing the CA RPC call configEventExportStoreProperties
Root cause:java.lang.NullPointerException: null

http://daciwsappuat:9080/acce/

****
[5/18/15 11:01:32:341 BDT] 000000cd LocalTranCoor E   WLTC0017E: Resources rolled back due to setRollbackOnly() being called.
[5/18/15 11:34:17:832 BDT] 000000d7 BusinessExcep E   CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "getConfiguration" on bean "BeanId(FileNetEngine#peengine-ejb.jar#PECARPC, null)". Exception data: [FNRPE0911843060E]Error executing the CA RPC call configEventExportStoreProperties
 Root cause:java.lang.NullPointerException: null
at filenet.eventexporter.ca.sql.DBType.verifyState(DBType.java:44)
at filenet.eventexporter.ca.sql.DBString.getValue(DBString.java:41)
at filenet.eventexporter.ca.sql.SchemaInfo.getSchemaInfo(SchemaInfo.java:76)
at filenet.eventexporter.ca.sql.SchemaInfo.getSchemaInfo(SchemaInfo.java:40)
at filenet.eventexporter.ca.main.DataStore.validateStore(DataStore.java:511)
at filenet.eventexporter.rpc.BaseRPC.setContext(BaseRPC.java:59)
at filenet.eventexporter.rpc.CARPC.setContext(CARPC.java:45)
at filenet.eventexporter.rpc.CARPC.setContext(CARPC.java:39)
at filenet.eventexporter.rpc.CARPC.setContext(CARPC.java:34)
at filenet.eventexporter.rpc.CARPCRepositoryConfiguration.getCAConfig(CARPCRepositoryConfiguration.java:239)
at filenet.eventexporter.rpc.CARPCImpl.getConfiguration(CARPCImpl.java:568)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.ejs.container.EJSContainer.invokeProceed(EJSContainer.java:6304)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:568)
at filenet.jpe.rpc.common.RequestInterceptor.getMyUser(RequestInterceptor.java:93)
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:548)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.doAroundInvoke(InvocationContextImpl.java:229)
at com.ibm.ejs.container.EJSContainer.invoke(EJSContainer.java:6195)
at filenet.vw.server.rpc.carpc.EJSRemote0SLPECARPC_b8739aea.getConfiguration(EJSRemote0SLPECARPC_b8739aea.java)
at filenet.vw.server.rpc.carpc._ICARPCRemote_Stub.getConfiguration(_ICARPCRemote_Stub.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at filenet.pe.ejb.client.PERPCProxyBase.ejbInvokeNormal(PERPCProxyBase.java:422)
at filenet.vw.server.rpc.carpc.PECARPCProxy.ejbInvoke(PECARPCProxy.java:52)
at filenet.pe.ejb.client.PERPCProxyBase.privateInvokeRPC(PERPCProxyBase.java:448)
at filenet.pe.ejb.client.PERPCProxyBase.access$000(PERPCProxyBase.java:89)
at filenet.pe.ejb.client.PERPCProxyBase$EJBExecuteAction.run(PERPCProxyBase.java:127)
at java.security.AccessController.doPrivileged(AccessController.java:314)
at javax.security.auth.Subject.doAs(Subject.java:573)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:195)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:152)
at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.filenet.apiimpl.util.J2EEUtilWS.doAs(J2EEUtilWS.java:220)
at com.filenet.api.util.UserContext.doAs(UserContext.java:143)
at filenet.pe.ejb.client.PERPCProxyBase.invokeRPC(PERPCProxyBase.java:478)
at filenet.vw.server.rpc.BaseCHASession.executeRPC(BaseCHASession.java:164)
at filenet.vw.server.rpc.carpc.CASession.getConfiguration(CASession.java:192)
at com.filenet.acce.mediator.process.P8CAMediator.executeGet(P8CAMediator.java:135)
at com.filenet.acce.mediator.process.P8CAMediator.execute(P8CAMediator.java:116)
at com.filenet.acce.AccePluginService$1.run(AccePluginService.java:100)
at java.security.AccessController.doPrivileged(AccessController.java:314)
at javax.security.auth.Subject.doAs(Subject.java:573)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:195)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:152)
at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.filenet.apiimpl.util.J2EEUtilWS.doAs(J2EEUtilWS.java:220)
at com.filenet.api.util.UserContext.doAs(UserContext.java:143)
at com.filenet.acce.AccePluginService.doPrivileged(AccePluginService.java:118)
at com.filenet.acce.AccePluginService.execute(AccePluginService.java:76)
at com.ibm.ecm.util.PluginUtil.invokeService(PluginUtil.java:595)
at com.ibm.ecm.struts.actions.PluginAction.executeBaseAction(PluginAction.java:109)
at com.ibm.ecm.struts.actions.BaseAction.execute(BaseAction.java:166)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at com.ibm.ecm.struts.controller.ControllerServlet.process(ControllerServlet.java:238)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:926)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1023)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3703)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:522)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:311)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:87)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)

[5/18/15 11:34:17:832 BDT] 000000d7 LocalTranCoor E   WLTC0017E: Resources rolled back due to setRollbackOnly() being called.

lunes, 11 de mayo de 2015

WEBSPHERE CONCEPTS

websphere concepts: cell, node, cluster, server…

Categories: JavaEE
Tags: Cell, Cluster, concepts, Deployment Manager, dmgr, Node, Node Agent, Server, WebSphere
Quick post… If you are not familiar with WebSphere at first you might get confused with its concepts: cell, deployment manager, node, node agent, cluster, server, …

First of all, lets start with the concept of a Cell:

A Cell is a virtual unit that is built of a Deployment Manager and one or more nodes. I guess a picture will help making things clearer:

WebSphere Cell
WebSphere Cell
But still there are a few concepts that need to be explained. The next obvious one is the Deployment Manager.

The Deployment Manager is a process (in fact it is an special WebSphere instance) responsible for managing the installation and maintenance of Applications, Connection Pools and other resources related to a J2EE environment. It is also responsible for centralizing user repositories for application and also for WebSphere authentication and authorization.

The Deployment Manager communicates with the Nodes through another special WebSphere process, the Node Agent.

The Node is another virtual unit that is built of a Node Agent and one or more Server instances.

The Node Agent it the process responsible for spawning and killing server processes and also responsible for configuration synchronization between the Deployment Manager and the Node. Extra care must be taken when changing security configurations for the cell, since communication between Deployment Manager and Node Agent is ciphered and secured when security is enabled, Node Agent needs to have configuration fully resynchronized when impacting changes are made to Cell security configuration.

Servers are regular Java process responsible for serving J2EE requests (eg.: serving JSP/JSF pages, serving EJB calls, consuming JMS queues, etc).

And to finish, Clusters are also virtual units that groups Servers so resources added to the Cluster are propagated to every Server that makes up the cluster, this will in fact affect usually more than a single Node instance.

Lets finish this post with another diagram to illustrate all those concepts.



zen consultora

Blogger Widgets