Method to query DB in OIM Event handler
Can anyone please give me info about how to connect to DB for querying the DB to get user attributes for customization in Event Handler (OIM 11g R2 PS1) ?
Is there any utility available to get DB connection object without exposing any DB details like SID,IP,JDBC Driver details ?
For ex: queery is like "Select USR_LOGIN from USR by USR_LOGIN DESC;"
Try Platform.getOperationalDS()
Similar Messages
-
OIM Event handler resistered and Imported but not working
hi,
I am using OIM 11g in windows 32 bit envoirnment.
I have registered a pre precess event handle and also imported it into oim but it's not working. pls find below details.
DB Entry of MDS_PATHS Table
1 LastNameEventHandlers.xml 197 196 /tiks/LastNameEventHandlers.xml DOCUMENT 5 143 http://www.oracle.com/schema/oim/platform/kernel eventhandlers 1 1 UTF-8 3558973303 0 0
DB Entry of plugins table
2 com.holcim.hssa.eventhandler.LastNmPreProcessEventHandlers oracle.iam.platform.kernel.spi.EventHandler 1.0 LastNamePreProcessEventHandlers 1
need tio know where does the eventhandlers goes D:\ORCL_HOME\Oracle_IDM1\server\features this path or else,
but it's not workingThe eventhandler
<eventhandlers xmlns="http://www.oracle.com/schema/oim/platform/kernel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/platform/kernel orchestration-handlers.xsd">
<action-handler class="com.holcim.hssa.eventhandler.LastNmPreProcessEventHandlers" entity-type="User" operation="CREATE" name="LastNmPreProcessEventHandlers" stage="preprocess" order="FIRST" sync="TRUE"/>
</eventhandlers>
The Plugin
<oimplugins>
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass="com.holcim.hssa.eventhandler.LastNmPreProcessEventHandlers" version="1.0" name="LastNamePreProcessEventHandlers"/>
</plugins>
</oimplugins>
The handler
package com.holcim.hssa.eventhandler;
import java.io.PrintStream;
import java.util.HashMap;
import oracle.iam.platform.context.ContextAware;
import oracle.iam.platform.kernel.spi.PreProcessHandler;
import oracle.iam.platform.kernel.vo.*;
public class LastNmPreProcessEventHandlers
implements PreProcessHandler
public LastNmPreProcessEventHandlers()
methodName = "";
System.out.println("LastNmPreProcessEventHandlers called of NamePreProcessEventHandlers 16 ");
public boolean cancel(long arg0, long arg1, AbstractGenericOrchestration arg2)
System.out.println("cancel called");
return false;
public void compensate(long arg0, long arg1, AbstractGenericOrchestration arg2)
System.out.println("getParamaterValue called");
public EventResult execute(long processId, long eventId, Orchestration orchestration)
System.out.println("EventResult execute called of LastNmPreProcessEventHandlers 16 ");
methodName = "execute";
HashMap parameters = orchestration.getParameters();
System.out.println((new StringBuilder("Parameters ")).append(parameters).toString());
String operation = orchestration.getOperation();
System.out.println((new StringBuilder("Pre Process Operation ")).append(operation).toString());
if(operation != null && operation.equalsIgnoreCase("create"))
String firstName = getParamaterValue(parameters, "First Name");
if(firstName != null && !firstName.trim().isEmpty() && !parameters.containsKey("Middle Name"))
orchestration.addParameter("Middle Name", firstName.substring(0, 1));
return new EventResult();
public BulkEventResult execute(long arg0, long arg1, BulkOrchestration arg2)
System.out.println("BulkEventResult called of LastNmPreProcessEventHandlers 16 ");
return null;
public void initialize(HashMap arg0)
System.out.println("initialize");
private String getParamaterValue(HashMap parameters, String key)
System.out.println((new StringBuilder("getParamaterValue")).append(key).toString());
String value = (parameters.get(key) instanceof ContextAware) ? (String)((ContextAware)parameters.get(key)).getObjectValue() : (String)parameters.get(key);
return value;
private String methodName;
Also have a question where does it goes after export
D:\ORCL_HOME\Oracle_IDM1\server\features or elsewhere? -
OIM Event Handler Triggers on Manual Entry but not for Trusted Recons
Hi,
I'm having some trouble getting my plugin to trigger upon a reconciliation. I've developed a plugin to modify some Xellerate User attributes on the OIM Profile.
- I've created a custom package with some java classes that retrieve attributes being passed in, manipulates the data, and returns the data through an EventResult
- I have system.out commands in my BulkEventResult function to see when this function is triggered
- My Plugin.xml calls this java class, which has a plugin point of oracle.iam.platform.kernel.spi.EventHandler
- I've uploaded the plugin (development) by putting the plugin.zip in the /server/plugin folder
- I've created an event handler that calls the plugin class upon an operation = "MODIFY". It also contains entity-type="User", stage="postprocess", order="FIRST", sync="TRUE"
- I've imported this using the weblogic import utility, setting OIMMetadata, and loaded the file to /custom/iam-data/EventHandler.xml
Upon testing, I am able to see my system.out debug statements in the logs, and can see the data actually changing when I am logged into OIM making changes directly on the system.
I am unable to see any of this come through when I run a trusted OID reconciliation against the same user, manipulating the same fields.
From what I've read, all I needed to do was put the code in the BulkEventResult function. However, none of my debug statements are being triggered, causing me to believe that this event handler is not even being triggered upon a trusted recon.
Does anyone have any ideas why this is, or if I have a configuration somewhere that is incorrect?
Any help is very welcome!Everyone,
Thanks for your help.
I found out the root of my issue: it was that my OPERATION was set to "MODIFY" in my EventHandler XML. It should have been "ANY". After I did this, it started to work.
As for registering plug-ins, you can actually drop the plugin zip file on the Oracle_IDM1/server/plugin directory for testing purposes, then re-import the EventHandler.XML you created.
I also found a few strange behaviors-
- If the order was too large (for example, 1000), it wouldn't trigger until the second time I updated it. I lowered the number to 50 and it kicked off every time.
- There is no purge cache needed when I re-imported the xml file after uploading the .jar again -
How to call a static method from an event handler
Hi,
I'm trying to call a static method of class I designed. But I don't know how to do it. This method will be called from an event handler of a web dynpro for Abap application.
Can somebody help me?
Thx in advance.
Hamza.To clearly specify the problem.
I have a big part code that I use many times in my applications. So I decided to put it in a static method to reuse the code. but my method calls functions module of HR module. but just after the declaration ( at the first line of the call function) it thows an exception. So I can't call my method. -
Hi all,
I want to know the significance of creating event handler method in Class builder.
and how it can be used at the time of event trigger.( Is it called automatically or programmer need to call it explicitly in the program.)
Thanks,
Sushant singhHi Sushant,
1. In ABAP Objects, triggering and handling an event means that certain methods act as triggers and trigger events, to which other methods - the handlers - react. This means that the handler methods are executed when the event occurs.
2.To trigger an event, a class must
Declare the event in its declaration part
Trigger the event in one of its methods
3.You declare events in the declaration part of a class or in an interface. To declare instance events, use the following statement:
EVENTS evt EXPORTING... VALUE(e1 e2 ...) TYPE type [OPTIONAL]..
4. An instance event in a class can be triggered by any instance method in the class. Static events can be triggered by any method. However, static methods can only trigger static events. To trigger an event in a method, use the following statement:
RAISE EVENT evt EXPORTING e1 = f1 e2 = f2 ...
5. Events are handled using special methods. To handle an event, a method must
be defined as an event handler method for that event
be registered at runtime for the event.
Declaring Event Handler Methods
Any class can contain event handler methods for events from other classes. You can, of course, also define event handler methods in the same class as the event itself. To declare an event handler method, use the following statement:
METHODS meth FOR EVENT evt OF cif IMPORTING e1 e2 ...
6. Registering Event Handler Methods
To allow an event handler method to react to an event, you must determine at runtime the trigger to which it is to react. You can do this with the following statement:
SET HANDLER h1 h2 ... [FOR]...
It links a list of handler methods with corresponding trigger methods. There are four different types of event.
7. Timing of Event Handling
After the RAISE EVENTstatement, all registered handler methods are executed before the next statement is processed (synchronous event handling). If a handler method itself triggers events, its handler methods are executed before the original handler method continues. To avoid the possibility of endless recursion, events may currently only be nested 64 deep.
Handler methods are executed in the order in which they were registered. Since event handlers are registered dynamically, you should not assume that they will be processed in a particular order. Instead, you should program as though all event handlers will be executed simultaneously.
Reward if useful. -
Difference between method,event handler,supply function.
hi,
i wants to know what is the difference between
method.
event handler.
supply funciton.
Regards:
Pankaj AggarwalHi Pankaj,
These are few lines from the F1 help documentation given,
Web Dynpro: Method Type :The type of a method defines whether you have an event handler, a supply
function, or a (normal) method.
Event Handler : Handlers of an event, a controller, an action, or an inbound plug of a view.
Method : Modularization unit within a view or a controller.Methods of a view can only be called locally
within this view.Methods of a controller (component or custom controller) can also be called from
a view or another controller, provided the controller is entered as controller used .
Supply Function : Method for filling a context node.
For more information refer to the Thomas post
Regards,
Sravanthi -
Event handler of inbound plug not called when plug fired by event handler
Hello All,
I have a rather bizzare problem, hopefully someone out there can figure out what is going on, as I'm rather stumped.
I have 2 views, A and B. They are linked by plugs, InA, InB, OutToA, OutToB. OutToB is linked to InB from A to B, OutToA is linked to InA from B to A.
There is an onActionLink in view A. Clicking on this triggers an action which calls the wdFirePlugOutToB method.
In view B some handling is done in the method onPlugInB, then wdFirePlugOutToA is called to change the displayed view back to A.
As far as the user is concerned they don't ever see view B. (this bit works perfectly!)
Now also in view A I have an event handler which handles a event from the component controller. It also calls wdFirePlugOutToB.
If I trigger an event in the component controller this event handler is called and the method called. However, when I put a breakpoint in the onPlugInB, flow never reaches here. Flow does get to the wdDoModifyView of view B but never to the inbound plug event handler.
Any suggestions as to what I might need to do? I would have thought calling the wdFirePlugOutToB method would ALWAYS trigger the linked event handler onPlugInB.
I am running NW04 SP18.
Thanks!Hi Bharathwaj,
The project I'm working on has a requirement to allow for a road-mapped process (FPM) which has one step in which multiple screens can be accessed. I'll give an example: A user in step A selects the cost centre that they want to work with, in step B they need to maintain several pages of information about this cost centre. The do not want to break this information into steps, as there is no logical progression from one step to the next, and it may well be that the user wishes to go from maintaining screen 1 to screen 3, and then screen 2, and then screen 4. Stepping between all screens (1->2->3->2->3->4) wastes time and is not very user friendly. Step C of the process confirms the data that the user entered in step B, and Step D is the validation that the changes have been committed to the database. (a very familar 4 step process for those using ESS).
To allow for this requirement, I have designed a left navigation pane type screen. links appear on the left of the screen and the user can use these to navigate between different screens (implemented as FPM IVAC VCs) on the right of the screen.
It is quite an elegant solution (even if I do say so myself although quite complex to implement. I have relied very heavily on reading the code SAP put together for the FPM. The most complex part is that in order to update the the content of view containers in an application you must trigger a web dynpro view navigation by firing a plug to a different view.
Unfortunately I don't have any sample application code, only the finished product, which I can't really share. But I can say that if you look at the FPM code carefully, working from where the wdInit of the FPM is called, it will eventually make sense.
One thing I found slightly frustrating, you can't use the FPM's component usage register (FPM method attachComponentUsage(IWDComponent, IWDComponentUsage)) to add a VC... darned inconvienient really (you'd think that the web dynpro framework could have implemented the concept of extending an interface, but the IBLC and IVAC interfaces are different! - even though the IVAC is just IBLC + a few methods), but then again you can manage the instantiation of the used VC yourself and call the onInit method of the VC passing the current fpm reference, to attach it to a common FC, and given that you should be sharing context through the FC and never the VC, then really this isn't too much of an issue. (I spent ages worrying that I couldn't add the instances of the VC that I was using within my navigation pane VC to the fpm instance list, until I realised that it really didn't matter!)
One day - when I have time (yeah right!) I might put together a blog about this sort of stuff, in the meantime, it keeps me plenty busy enough not to have the time!
Hope this helped in some small way,
Cheers,
Chris -
Registering event handler with preloader
As you can see from the code below, I have an application
with a custom preloader designated in the Application tag.
I would like the preloader to be able to receive a message
from my main application but in order to that I need to register a
method in the preloader as an event handler for an event fired by
my application and in order to do that I have to have a reference
to both the preloader and the application.
Where can I get a reference to both? this.preloader seems to
be null when the initialize() event is fired in my application and
mx.core.Application.application is null in my preloader. Is there
any way at all to do this?
I would GREATLY appreciate any help with this! I've been
struggling with this for hours :(
Thanks!
MosheThank you Nayan..
BR
Aliye -
What is an event handler..?
I'm trying to learn how to make responsiveness UI. I've read that I can not use SwingUtilities.invokeLater() method if I am in a event handler. The question can seems stupid but I'm only a beginner: what is a event handler? From what I know it might be the actionPerformed method..is it right? Could somebody give me an example? thanks!
Basically an event handler is a class that performs code.
It can be any class (even the same that fires the event), but it has to implement the proper interface for the event you want to catch. If you want to perform special code when someone clicks on a button you want to catch an Action, therefor you need an ActionListener, a class that either implements the ActionListener interface (and therefor the method actionPerformed) or your class has to extend AbstractAction (and therefor has an actionPerformed, too).
It you want to perform special code when someone chooses an element from a list, you want to be informed about a ListSelectionEvent and therefor need a class that implements the ListSelectionListener Interface (and provides the method selectionChanged).
The class that should react on the event has to be declared as being a listener to the object that fires the events. So an actionListener on a Button would be added by
button.addActionListener(listener);or
button.setAction(action);(Note that all variables used are just for clarifiing the type you need and have to be exchanged by the names of your declared objects)
There are many more events ... really, read the tutorial! -
I have added a custom button on ALV toolbar of my web dynpro view. Now when user click that button, i want to implement the functionality...like onAction...How to do that...where do i need to write the code and how can i capture the button event...
pls suggestHi ,
write following to create button:
DATA: ui_btn1 TYPE REF TO cl_salv_wd_fe_button.
DATA: ui_sepa1 TYPE REF TO cl_salv_wd_fe_separator.
DATA: sepa1 TYPE REF TO cl_salv_wd_function.
DATA: btn1 TYPE REF TO cl_salv_wd_function.
data: lr_disp_button type ref to cl_salv_wd_fe_button.
data: lv_button_text type string.
CREATE OBJECT ui_btn1.
CREATE OBJECT ui_sepa1.
create object lr_disp_button.
/to create new buttons...
lv_button_text = 'Refresh Selection'.
lr_disp_button->set_text( lv_button_text ).
lr_disp_button->SET_IMAGE_SOURCE( 'ICON_DISPLAY' ).
btn1 = l_value->if_salv_wd_function_settings~create_function( id = 'LSBUTTON' ).
btn1->set_editor( lr_disp_button ).
IN methods tab of view declare:
ON_REFRESH Event Handler On refresh function pf ALV ON_FUNCTION INTERFACECONTROLLER ALV
in method ON_REFRESH write below code:
DATA: temp TYPE string.
temp = r_param->id.
IF temp = 'LSBUTTON'.
custom functional;ity
endif.
where :
R_PARAM Importing 1 IF_SALV_WD_TABLE_FUNCTION
This woudl solve ur purpose.
Regards,
Vishal. -
I'm wondering if, in general, it is better to call the send()
method for HTTPService in the creationComplete event handler, or if
there is any advantage to calling send() in the initialize event
handler."Greg Lafrance" <[email protected]> wrote in
message
news:gm80e7$n6c$[email protected]..
> I'm wondering if, in general, it is better to call the
send() method for
> HTTPService in the creationComplete event handler, or if
there is any
> advantage
> to calling send() in the initialize event handler.
I think that depends on how much stuff your program has to
build, and
whether you're doing anything in the result handler that
might depend on
having things ready (and if your HTTPService is set up in
MXML, it's
probably not ready for you to be able to send anyway). -
Hi,
Products
OIM 11.1.1.5 BP02
OAM 11.1.1.5
OID 11.1.1.5
Problem
I have written a post-process event handler which fires when a role is assigned to a user. The event handler calls a plugin which uses the UserManager API to generate and change the user's password.
I've tested this by assigning a role to the user via the OIM web console. I can see my log messages indicating that the event handler has fired and that the password has been changed.
However, I expected that when UserManager.changePassword completed, a notification email would then be sent to the user informing them of the new password, but no notification email has been sent.
The email notifications have been set up correctly, because I have changed the same user's password via the OIM web console and successfully received a Reset Password email.
So, my questions are:
1) Am I right in thinking that when you call UserManager.changePassword(), an out-of-the-box ResetPassword email notification should be sent to the user?
2) Has anyone got this working in 11.1.1.5?
Some more detailed info
In my plugin class I'm calling the following from both execute methods (EventResult and BulkEventResult):
char newpasswd[] = new RandomPasswordGeneratorImpl().generatePassword(user);
getUserManager().changePassword(userKey, newpasswd, false, null, true);
logger.info(("Successfully changed password"));
plugin.xml
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin
pluginclass="oracle.iam.PostInsertPlugin"
version="1.0"
name="PostInsertPlugin">
</plugin>
</plugins>
</oimplugins>
$OIM_HOME/server/bin/weblogic.properties
wls_servername = oim_server1
app = OIMMetadata
metadata_from_loc=/home/oracle/eventhandlers
metadata_file=/metadata/roleuser/custom/EventHandlers.xml
/home/oracle/eventhandlers/import/metadata/roleuser/custom/EventHandlers.xml
<?xml version='1.0' encoding='utf-8'?>
<eventhandlers
xmlns="http://www.oracle.com/schema/oim/platform/kernel"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/schema/oim/platform/kernel orchestration-handlers.xsd">
<action-handler
class="oracle.iam.PostInsertPlugin"
entity-type="RoleUser"
operation="CREATE"
name="PostInsertPlugin"
stage="postprocess"
order="1002"
sync="TRUE"/>
</eventhandlers>
There are no errors in the OIM out and diagnostic logs apart from the following which occur at OIM startup:
[2013-01-07T16:29:23.425+00:00] [oim_server1] [ERROR] [IAM-0080075] [oracle.iam.platform.kernel.impl] [tid: [ACTIVE].ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: oiminternal] [ecid: 2e903d7ef060ab65:66b2de91:13c15d6d9ce:-8000-0000000000000002,0] [APP: oim#11.1.1.3.0] XML schema validation failed for XML /metadata/iam-features-OIMMigration/EventHandlers.xml and it will not be loaded by kernel.
[2013-01-07T16:29:24.267+00:00] [oim_server1] [ERROR] [IAM-0080075] [oracle.iam.platform.kernel.impl] [tid: [ACTIVE].ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: oiminternal] [ecid: 2e903d7ef060ab65:66b2de91:13c15d6d9ce:-8000-0000000000000002,0] [APP: oim#11.1.1.3.0] XML schema validation failed for XML /metadata/iam-features-callbacks/event_configuration/EventHandlers.xml and it will not be loaded by kernel.
Thanks
dty
Edited by: oim_user on Jan 7, 2013 5:37 PMNo notification will be sent if you changepassword using the method from usermanager api.
You have to trigger the resetpassword event manullay in your code.
Here is a sample code to create an event for reset password. Once you create event, invoke it from notification service - notify method.
NotificationEvent event = new NotificationEvent();
String[] receiverUserIds= {userLogin};
event.setUserIds(receiverUserIds);
event.setTemplateName("ResetPasswordNotification");
event.setSender(null);
HashMap<String, Object> resolvedData = new HashMap<String, Object>();
resolvedData.put("userLoginId", userLogin);
event.setParams(resolvedData); -
Help needed in implementing validation event handler in OIM 11g
Hello experts,
I am trying to set username policy by implementing a validation event handler in OIM 11.1.1.5.
Following are the steps followed
1. Import metadata
Created a file called Eventhandler.xml as below and imported using weblogicImportmetadata.sh
<?xml version='1.0' encoding='UTF-8'?>
<eventhandlers xmlns="http://www.oracle.com/schema/oim/platform/kernel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/platform/kernel orchestration-handlers.xsd">
<validation-handler class="test.iam.eventhandlers.CustomValidationEventHandler" entity-type="User" operation="CREATE" name="CustomValidationEventHandler" order="1000" sync="TRUE"/>
</eventhandlers>
2. Register plugin
plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins pluginpoint="oracle.iam.platform.kernel.spi.ValidationHandler">
<plugin pluginclass="test.iam.eventhandlers.CustomValidationEventHandler" version="1.0" name="CustomValidationEventHandler" />
</plugins>
</oimplugins>
Just givng sys out in the below code to check whther it is getting triggerred during user create.
package test.iam.eventhandlers;
import java.util.HashMap;
import oracle.iam.platform.Platform;
import oracle.iam.platform.context.ContextAware;
import oracle.iam.platform.kernel.ValidationException;
import oracle.iam.platform.kernel.ValidationFailedException;
import oracle.iam.platform.kernel.spi.ValidationHandler;
import oracle.iam.platform.kernel.vo.BulkEventResult;
import oracle.iam.platform.kernel.vo.BulkOrchestration;
import oracle.iam.platform.kernel.vo.Orchestration;
public class CustomValidationEventHandler implements ValidationHandler {
@Override
public void initialize(HashMap<String, String> arg0) {
// TODO initialization
System.out.println("init validate event handler");
@Override
public void validate(long processId, long eventId, Orchestration orchestration)
throws ValidationException, ValidationFailedException {
System.out.println("Beginning of validation");
System.out.println("End of validation");
@Override
public void validate(long processId, long eventId, BulkOrchestration arg2)
throws ValidationException, ValidationFailedException {
// TODO - N/A
System.out.println("Bulk Orchestration not yet implemented");
Now when i create a user it is not allowing and i am getting system error in the front end and in the logs i could see something below
<May 28, 2012 3:03:29 PM CEST> <Error> <oracle.iam.identity.usermgmt.impl> <IAM-3050029> <The user cannot be created due to validation errors.
oracle.iam.platform.kernel.ValidationFailedException: Event handler CustomValidationEventHandler implemented using class/plug-test.iam.eventhandlers.CustomValidationEventHandler could not be loaded.
at oracle.iam.platform.kernel.impl.OrchProcessData.runValidationEvents(OrchProcessData.java:177)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.validate(OrchestrationEngineImpl.java:644)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.process(OrchestrationEngineImpl.java:497)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.orchestrate(OrchestrationEngineImpl.java:444)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.orchestrate(OrchestrationEngineImpl.java:378)
at oracle.iam.identity.usermgmt.impl.UserManagerImpl.create(UserManagerImpl.java:656)
at oracle.iam.identity.usermgmt.api.UserManagerEJB.createx(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
I have implemented preprocess and postprocess event handler before with similar kind of plugin registration, metadata import and everything worked fine. Not sure what is the problem here with validation event handler.
Thanks
DKInstead of registering the plug-in can u try placing it in the plugins folder under Oracle_IDM1/server folder.
at times restart is required. esp when the server is running in production mode.
Regards
user12841694 -
Unregister Event Handler OIM 11g
Hi
I have created a event handler and registered the same within OIM 11g. it gets executed as expected after create user (post process). next i changed some of the code within my custom event handler. and registered the plugin after i unregistered the old one. unfortunately i still see the old output in my logs
i have purged the metadata chache, i have bounced the OIM but no luck..
Are there any steps / checks i need to follow after i unregister the event handler.. and also plz confirm whether we need to follow all the steps of registration of event handler every time we make changes to the event handler class. uhhh.. its really time consuming when
thanks
shivHi,
Please make sure you are shipping updated JAR files in plugin.zip and re-register.
Follow below steps to re-register plugin,
1. Unregister plugin using below command
ant -f pluginregistration.xml unregister
2. Prepare plugin.zip with updated JAR file.
3. register plugin using below command
ant -f pluginregistration.xml register
You do not need to restart OIM server after re-register and need not to import eventhandler.xml unless you change version of plugin.
Also you can verify registered plugin details in plugin table with following query (Run on OIM DB),
select * from plugins;
Thanks,
Pradeep. -
Event Handler not found -OIM 9102
Hi Experts,
I'm facing a problem while creating a user manually in OIM. Everytime I try to manually create a user, an error message is displayed on the GUI saying, "DOBJ.EVT_NOT_FOUND
Event Handler not found".
On checking the logs, this is what I get there. Since I'm a newbie, I'm not able to figure out what's happening.
Any help would be great.
java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("XELADM"."UPA_USR"."ACT_KEY")
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:85)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:947)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3462)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1349)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:365)
at com.thortech.xl.dataaccess.tcDataBase.writePreparedStatement(Unknown Source)
at com.thortech.xl.dataobj.PreparedStatementUtil.executeUpdate(Unknown Source)
at com.thortech.xl.audit.auditdataprocessors.UserProfileRDGenerator.insertUserProfile(Unknown Source)
at com.thortech.xl.audit.auditdataprocessors.UserProfileRDGenerator.processUserProfileChanges(Unknown Source)
at com.thortech.xl.audit.auditdataprocessors.UserProfileRDGenerator.processAuditData(Unknown Source)
at com.thortech.xl.audit.genericauditor.GenericAuditor.processAuditMessage(Unknown Source)
at com.thortech.xl.audit.engine.AuditEngine.processSingleAudJmsEntry(Unknown Source)
at com.thortech.xl.audit.engine.AuditEngine.processOfflineNew(Unknown Source)
at com.thortech.xl.audit.engine.jms.XLAuditMessageHandler.execute(Unknown Source)
at com.thortech.xl.schedule.jms.messagehandler.MessageProcessUtil.processMessage(Unknown Source)
at com.thortech.xl.schedule.jms.messagehandler.AuditMessageHandlerMDB.onMessage(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:495)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:116)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:109)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:402)
at org.jboss.ejb.Container.invoke(Container.java:960)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:1092)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1392)
at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:266)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:906)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170)
at org.jboss.mq.SpySession.run(SpySession.java:323)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:761)
at java.lang.Thread.run(Thread.java:619)
2011-03-18 15:55:01,283 ERROR [XELLERATE.AUDITOR] Class/Method: UserProfileRDGenerator/insertUserProfile encounter some problems: Failed to insert user profile record in table UPA_USR for auditee 5943
2011-03-18 15:55:01,283 ERROR [XELLERATE.AUDITOR] Class/Method: UserProfileRDGenerator/insertUserProfile encounter some problems: {1}
com.thortech.xl.orb.dataaccess.tcDataAccessException
at com.thortech.xl.dataaccess.tcDataAccessExceptionUtil.createException(Unknown Source)
at com.thortech.xl.dataaccess.tcDataBase.createException(Unknown Source)
at com.thortech.xl.dataaccess.tcDataBase.writePreparedStatement(Unknown Source)
at com.thortech.xl.dataobj.PreparedStatementUtil.executeUpdate(Unknown Source)
at com.thortech.xl.audit.auditdataprocessors.UserProfileRDGenerator.insertUserProfile(Unknown Source)
at com.thortech.xl.audit.auditdataprocessors.UserProfileRDGenerator.processUserProfileChanges(Unknown Source)
at com.thortech.xl.audit.auditdataprocessors.UserProfileRDGenerator.processAuditData(Unknown Source)
at com.thortech.xl.audit.genericauditor.GenericAuditor.processAuditMessage(Unknown Source)
at com.thortech.xl.audit.engine.AuditEngine.processSingleAudJmsEntry(Unknown Source)
at com.thortech.xl.audit.engine.AuditEngine.processOfflineNew(Unknown Source)
at com.thortech.xl.audit.engine.jms.XLAuditMessageHandler.execute(Unknown Source)
at com.thortech.xl.schedule.jms.messagehandler.MessageProcessUtil.processMessage(Unknown Source)
at com.thortech.xl.schedule.jms.messagehandler.AuditMessageHandlerMDB.onMessage(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:495)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:116)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:109)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:402)
at org.jboss.ejb.Container.invoke(Container.java:960)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:1092)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1392)
at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:266)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:906)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170)
at org.jboss.mq.SpySession.run(SpySession.java:323)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:761)
at java.lang.Thread.run(Thread.java:619)
Thanks,
NikhilCheck for the ACT_KEY in the USR table in the database for User with the key 5943. It should not be null. Just a hunch by looking at the error and of course as Kevin said, you need to truncate the jms stuff.
-Bikash
Maybe you are looking for
-
Scheduling is not working in BI Publisher
Hi all, I am trying to schedule the report on BI publisher it's giving the following error: oracle.apps.xdo.servlet.scheduler.ProcessingException: java.sql.SQLException: Listener refused the connection with the following error: ORA-12519, TNS:no appr
-
Hey, I'm using Numbers for the first time and have run into a couple of issues that probably have stupidly simple answers...Hope you guys can help me out! I'm trying to do a simple financial line graph with time on the x axis and income on the y and
-
SGA_TARGET and SGA_MAX_SIZE?
Dear Professional, I have been asked by my client, He wants me to install Oracle 11g software in three servers. One server has 16GB another has 32 GB, and another has 64 GB of RAM? What would be the Best swap size? How memory I need to assign to SGA
-
JAX-WS Web Service with XFire Client
I wrote a simple web service and client using XFire. However the server now needs to be JAX-WS. I wrote a simple service using NetBeans but I can't seem to get it to work with XFire. JAX-WS doesn't seem to like the SOAP XFire is sending it and the pa
-
Is it possible to ensure a XML document is secure for different users. In other words can you password protect diferent areas of a document to be posted on the Web. Only valid users can gain access to one XML document for their details. Ie one file ,