Showing posts with label PeopleSoft. Show all posts
Showing posts with label PeopleSoft. Show all posts

Friday, October 3, 2008

PeopleSoft Listener Issues

Making PeopleSoft Connector URL work can be an issue sometimes.
So, here is the process you need to follow to make it work:

1. Create a folder C:\TEMPSFT

2. cd\TEMPSFT

3. In this folder copy your peopleSoftUserMgmt.war

4. Create another folder C:\TEMPSFT\META-INF

5. Under this folder C:\TEMPSFT\META-INF, create a file called application.xml

6. Put the following contents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd">
<application>
<display-name>PeopleSoft UserMgmt Listener</display-name>
<module>
<web>
<web-uri>peopleSoftUserMgmt.war</web-uri>
<context-root>/peopleSoftUserMgmt</context-root>
</web>
</module>
</application>

7. Create another file MANIFEST.MF with the following contents:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.3
Created-By: 1.4.2_17-b06 (Sun Microsystems Inc.)
Assembled-By: XIM Assembler
Assembled-At: 07/01/2008 21:10
Product-Version: 9.1.0
Build-Number: 9.1.0.1849.0

8. Go to C:\TEMPSFT folder and execute the following command:

jar -cvf peopleSoftUserMgmt.ear peopleSoftUserMgmt.war META-INF/

9. Now, deploy (copy) peopleSoftUserMgmt.ear file in your application server. Say for JBOSS:
C:\jboss4.0.3SP1\server\default\deploy

10. Restart your app server.

11. Now your application should be ready to recieve the PSFT xml:

Your url should be:

http://<hostname>:<port>/peopleSoftUserMgmt/do/peopleSoftAction

12. Go to your out of the box connector test folder now and try to change server url and test psft-xel-test.vbs

13. You should see a reconciliation event now in Design Console and trace.txt should show the contents of the xml posted to this listener.

14. Same steps can be applied to Employee Reconciliation.

Friday, July 11, 2008

Monitoring OIM Apps / Listeners - Automatic Startups

The code here checks the Peoplesoft listener in OC4J environment that keep crashing unexpectedly in OIM 903 for some reason. The XML messages sent from PeopleSoft gets queued and won't reach OIM. The listener servlet throws the HTTP 500 Internal Server error. So, to restart the listener automatically, we can use the following code. You can set this code to execute at specific intervals to recheck and recycle the app, if in case it is down.

==========================================
PSFTListenerUtility.java
==========================================
import java.io.*;
import java.net.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.thortech.xl.scheduler.tasks.SchedulerBaseTask;

public class PSFTListenerUtility extends SchedulerBaseTask {

private boolean stop;

public PSFTListenerUtility() {
super("PSFTListenerUtility");
stop = false;
}

@Override
public void execute() {

HashMap myMap = new HashMap();
myMap.put("http://idmdev.bhatiacorp.com:7777/peopleSoftUsrHRM/do/peopleSoftAction", "peopleSoftUsrHRM");
myMap.put("http://idmdev.bhatiacorp.com:7777/peopleSoftUsrCRM/do/peopleSoftAction", "peopleSoftUsrCRM");
myMap.put("http://idmdev.bhatiacorp.com:7777/peopleSoftUsrPRT/do/peopleSoftAction", "peopleSoftUsrPRT");


Iterator iterator = myMap.keySet().iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
String temp = key.toString();
try {
URL url = new URL(temp);
boolean isAlive = getURLOutput(url);
if (!isAlive) {
try {
//restart
String applicationName = (String) myMap.get(key);
logger.debug(" --- REBOOTING PEOPLESOFT LISTENER --- ");
logger.debug(" --- LISTENER NAME: " + applicationName +" --- ");
Runtime.getRuntime().exec("/opt/oracle/product/t01idm_app/opmn/bin/opmnctl startproc application="+applicationName);
} catch (IOException ex) {
Logger.getLogger(PSFTListenerUtility.class.getName()).log(Level.SEVERE, null, ex);
}
}
// Object val = myMap.get(URL);
} catch (MalformedURLException ex) {
Logger.getLogger(PSFTListenerUtility.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

public boolean getURLOutput(URL url) {
BufferedReader in = null;
String inputLine;
boolean isAlive = true;
try {
in = new BufferedReader(new InputStreamReader(url.openStream()));
//for 500 Internal Server error, an exception will be caught.
in.close();
} catch (IOException ex) {
isAlive = false;
logger.debug("PEOPLESOFT LISTENER NOT RUNNING!");
Logger.getLogger(PSFTListenerUtility.class.getName()).log(Level.SEVERE, null, ex);

}

return isAlive;
}

@Override
public boolean stop() {
logger.debug("Entering PSFTListenerUtility.stop()");
logger.warn(" ---- Stopping current task ---- ");
stop = true;
logger.debug("Exiting PSFTListenerUtility.stop()");
return stop;
}
}


courtesy:Askar Zaidi