Posts

Showing posts from October, 2014

Best practices to connect thirdparty services from ATG

This issue typically occurs when ATG uses a client to access external hosted services over http when the read/connection timeout are not configured.The speed and integrity of the external services is outside of the control of ATG however if these services are unavailable any attempt to connect to them over http will result in a connection (or thread) which does not timeout (the default http connection timeout is configured to -1 or 0 which is infinite). This results in a build of hanging threads in the ATG application which wait on the default http timeout. . Recommendations Below is a list of recommendations to overcome outages 1.     Prevent client requests invoking application threads indefinitely . Set the  sun.net.client.defaultConnectTimeout  and  sun.net.client.defaultReadTimeout 2.     Prevent application from using an thirdparty services which are unavailable . Implement a mechanism for preventing unnece...

JMS publish/subscribe pattern in ATG

The basic JMS publish/subscribe pattern leads to create an infinite number of same message executions. The issue basically occurs when the  MessageConsumer is not able to successfully process the message.  When it occurs the transaction is rolled back and the message is put  back on the queue.   The  Subscriber  try to retries to process the message ,when  this message has been put back in the Message Queue . The message will be successfully processed,if the error is result of a temporary condition. However, it is possible to create an infinite loop message executions, if the issue is as a result of invalid message.  This will eventually leads to overwhelms the database with the large number of updates and rollbacks. Recommendations: 1.       Use SQL JMS messages for all business critical operations .example: order or a customer profile updates. 2.       Limit the number of JMS message retries 3. ...

Preferred ATG Module structure for any applications

Basically an ATG application is built using many layered modules whose configurations are combined by the ATG Nucleus at runtime forming a superset of all the configurations in the underlying modules. The sequence or order in which the configuration layers are combined is important and provides a  facilitates  to control the configuration from a generic or base application; through applications, environments, and server groups; to individual server instances. Module structure: Config-Module | |-------1.Base |          | |          |----atg(Default) |          | |          |----App specific config | |-------2.Applications |          | |          |----Store |          |----CSC |          |----Publish |           |--...