I have a strange requirement for my project. My client wants to use ATG Personalistaion server and Weblogic application Server together.
The client is interested in keeping maximum business logic inside Weblogic and only the personalization part inside ATG.
Since Personalization also involves accessing the database and since ATG's peronalization methodology is fairly proprietary, I am unsure of how the architecture should be.
I've actually came across this "dual application server" scenario before so it's not that strange I suppose. Architecturally I don't see it as too different from a standard enterprise web application. These applications typically consist of the web application (JSPs + Servlets) that deals with the presentation and web related aspects of the application and the enterprise application (EJBs/JMS/CORBA) that is the business of the application. The enterprise application are distributed, can run on any server and separate from the web application. So in your situation DPS is the web application and Weblogic can run your enterprise application. Dynamo is DAS + DPS, just replace DAS with Weblogic/Websphere/etc. Obviously you won't be able to use Dynamo's nucleus framework. Depending on what your application actually is there will be issues specific to you. Performance...one issue is that typically you run your web app and your EJBs in the same JVM so the server optimizes your calls using pass by reference, but I don't think this will be a show stopper. Security is something else you might have to work with since now you are authenticating against two authentication mechanisms, unless maybe you standardize on LDAP or something. Hope this information has been useful.
I have done this before and it worked well enough (DPS/DAS 4.5.1 with WLS 5.1 on NT and Solaris with Java 2).
The biggest issue you will have is how to authenticate requests to the EJB server (WLS). My solution (far from most efficient) was that even though I cached Home and even Stateless Session EJB stubs in DAS, I had to create a new InitialContext for for WLS with appropriate principal and credentials prior to invoking any EJB method. I didn't use this context and I closed it as soon as the EJB calls were made. This is necessary because the security context is carried on the thread that creates the InitialContext
This was costly - it added substantial response time (a 50-millisecond set of EJB invocations would take almost 150 milliseconds), but it worked like a charm and was more efficient than creating a context, looking up the EJBHome, creating the EJB instance and invoking the methods each time.
I have thought of a few alternatives. One was to define helper EJB methods that do not require privilege (usable by 'guest') and take principal and credentials as additional parameters These create a local (in-server) initial context with those credentials, and invoke the EJB with the 'real methods'. I have done something like this for invocation of EJB's via HTTP, but I haven't tried doing exactly this before - I hope it works.
Thanks for the comments.
I have done some more work on this.
DPS requires you to have a user profile schema which is described in an xml file which maps it to a database.
Ideally in a three tier architecture all database access is done through the EJB layer which in my scenario sits on Weblogic.
However since the userprofile also needs to be mapped to the database in ATG's proprietary way (for DPS to work) we need to access the database from the presentation layer as well as the middle tier. Architecturaly this looks like an unclean solution
I don't think you have a choice here. Thats the way DPS works. DPS needs access to the User Profile table along with the other DPS specific database tables. It seems to be a unclean solution from the architecture point of view. But if you look at it from storing the server configuration perspective, it is quite possible to store the configuration in the database and this is a clean solution. Also, presentation layer is not directly contacting the database, but it is contacting database thru' DPS that acts as an intermediate layer.
i have a samll query..
my requiremet is also in the same lines. i am using both atg and weblogic servers. Iam using SOAP btn the two servers. Using ATG5.6.1 i want to avoid the SOAP calls to the ATG presonalization server and i want to make it a local call since now ATG is on top of the WEblogic server.
do you have any idea...