Java event model and dialog

I have a question about Java event handlers. My understanding is that all event handlers are executed by the same event thread, one at a time. How does one then explain the situation where the action for a button press is opening up a dialog pane which has a button of its own (along with an action handler defined for the button) and then wating for the dialog pane to close? It seems like the event thread will have to pause while executing the event handler of the main button, then execute the event handler of the button inside the dialog pane, then resume executing the event handler of the main button. How is that possible?
JZ

Interesting..says another event pump will run while the one invoking the dialog is blocked. Two thoughts. First, what "blocks" the first one? Is it that the JDialog code, in the .show() call uses the EventQueue.push() to put its own version of an eventque in place and while that is there, the other one is blocked automatically? Or does it somehow have to put in a loop on the first one while it puts in its own event que, to block the first one? I am a little unsure of how the first one gets blocked.
Another thought, when a dialog (modal) shows up and puts its own event que in place, if a button in that dialog spawns another modal dialog, does that second modal dialog do the same thing? I would guess it does, seems fitting. Just curious and haven't got the java source handy at the moment.

Similar Messages

  • Import Java Bean model in Web dynpro DC

    Hi all,
    I have created the following DC's on a track:
    1. EMPDic (Type: Dictionary) - DC that contains the database table.
    2. EMPEjb (Type J2EE) - DC that contains the EJBs that have business logic. Created a public part EMPpp that containd the bean classes.
    3. EMPEar (Type J2EE) - DC that contains the EMPEjb module.In Used Dcs added EMPpp
    4. EMPCmd (Type: Java) - DC that acts as the command bean.
    Created 2 public parts 'compile'(Type:compilation) and 'deploy' (Type:assembly). In Used DCs added EMPpp.
    5. EMPWd (Type: Webdynpro) - DC that will contain the Java Bean Model and the application. In Used DCs added 'compile' and 'deploy'.
    Q1.) Now when i try to import the Java bean model by selecting the radio button "public parts of used DCs" and look at the dropdown, i am not able to see any of the jar's related to my command bean DC.
    If i select the radio button "project(source folder)" and click Next it says 'No JavaBeans for import'. Am i missing something?
    Q2) Could someone tell me the exact steps from pt. 4 onwards. ie. whether it is necessary to create the 2 public parts for EMPCmd DC and what should it contain.
    Thanking you in advance.

    Hi Melwyn,
    check the NWDI tutorial, it will help you:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/c0b53558-6df6-2910-cfbf-a63316bb0fad
    kind regards
    Stefanie

  • How to show surveys name and responses under curret subsite by Java object model in the CEWP

    Hi All,
    I need to show the name of surveys, their description and all responses against the survey  under my current sub-site.
    As I think there is no such out of box web-part available in SharePoint 2010.
    1. Can I get it by using java script client object model and place that in CEWP?
    2. Could I get code for this need?
    Naimish

    Sorry For late reply, I have managed to get needed out put.
    Thank you Hemendra.
    =====================
    <script ='/_layouts/SP.js' type='text/javascript'>
    ExecuteOrDelayUntilScriptLoaded(retrieveAllListProperties, "sp.js"); 
    function retrieveAllListProperties() {
        var clientContext = new SP.ClientContext.get_current();;
        var oWebsite = clientContext.get_web();
        this.collList = oWebsite.get_lists();
        clientContext.load(collList);
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    function onQuerySucceeded() {
        var listInfo = '';
        var str="";
        var columns = 3;
        var listEnumerator = collList.getEnumerator();
        str += '<table  style="width:1000px" border="1" cellspacing="1" cellpadding="5">'
        str += '<td style="font-size:14.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;color:red">' +  'Survey Title' + '</td>'
        str += '<td style="font-size:14.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;color:red">' + 'Survey Description' + '</td>'
        str += '<td style="font-size:14.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;color:red">' +  'Total Responses'+ '</td>'   
        while (listEnumerator.moveNext()) 
            var oList = listEnumerator.get_current();
            if(oList.get_baseType() == 4)
            {   str += '<tr>'
                //listInfo += 'Survey Title: '+oList.get_title() +'------'+' Description: '+oList.get_description() +'------'+ ' Total Responses: ' + oList.get_itemCount();
                str += '<td>' +  oList.get_title() + '</td>'
                str += '<td>' +  oList.get_description() + '</td>'
                str += '<td>' +  oList.get_itemCount() + '</td>'
                str += '<tr>'
                str += '</tr>'
        str += '</table>'   
        document.getElementById("demo").innerHTML = str;
    function onQueryFailed(sender, args) {
        alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
    </script>
     <span id="demo" style="float:left;">Survey</span>

  • CI (ABAP+Java) & DB in one AIX box and dialog Instance on a Linux box

    We trying to install SAP, CI+DB in one AIX box and dialog Instance on a Linux box. We are facing problem when trying to install Java Dialog Instance. Is it possible and recomended to install in the above manner?
    Has anyone done this? please share your exepeirience.
    thanks & regards,
    Harsha.
    ps we have read the Note 1067221 - Central Note for Heterogeneous Installation, which indicates this is possible.

    If you would have stated, which kind of problem you are facing, we could have seen, if the problem is related to because of heterogeneity or because of something different.
    It should be possible to do that - yes
    Markus

  • Delegation Event Model

    Hey ,
    I am trying to understand the java event handling with swing . I have got good responses from urhand ( thanks for all your responses :) ) but I have a different approach to it. I am primarily a actionscript developer so I`ll try and explain to the best of my abilities what I am trying to achieve with swing here.
    Let us take a very simple example a LoginManager class which basically has 2 JLabes and 2 Textfields and one button.
    So I would like to make my LoginManager class to dispatch an event which would send the username and password and my MainApp class have the call back function to it.
    Here is what the actionscript code would look like
    import mx.events.EventDispatcher;
    class Login extends MovieClip{
    private var okButton:Button
    private var userName:TextField;
    private var dispatchEvent:Function;
    public var addEventListener:Function;
    public function Login (){
    init();
    private function init(){
    EventDispatcher.initialize(this);
    _okButton.onPress=sendEvent();
    private function sendEvent(){
    dispatchEvent({type:"onClick",target:this,username:userName.text});
    class MyApp{
    public function createGUI(){
    var log:Login=new Login();
    log.addEventListener("onClick",onLoginClick);
    private function onLoginClick(eventObj:Object){
    print(eventObj.username);
    So basically the MainApp listens for a onClick event from Login and records the username. I am trying to achieve the same with java swing making . I was searching through the forums and I came accross this solution but I dont know how to or where to dispatch the events and how to set up the call back functions for my mainApp class
    This is the way I want to create my App so I can dispatch events from one class to another sending whatever data I want to.
    public interface InventorySelectionListener {
      public void inventoryChanged(InventorySelectionEvent ev);
    public class InventoryPanel extends JPanel {
      public void addInventorySelectionListener(InventorySelectionListener listener) {
      public void removeInventorySelectionListener(InventorySelectionListener listener) {
    public class Shop extends JFrame implements InventorySelectionListener {
        inventoryPanel.addInventoryListener(this);
      public void inventoryChanged(InventorySelectionEvent ev) {
    }I hope I am making sense as to what I am trying to achieve / learn here.
    Thanks :)
    cheesrs :)
    firdosh
    [urhand .. thanks for your previous solutions  :) ]

    You will need to learn MVC sooner or later... so why not sooner? This is a simple example, a real app would use JPasswordField.
    So how does it work? Rather than listening for a change in the logon dialog, the logon dialog creates a container and puts some data in it. Then, the main class examines the contents, and finds the username & password.
    This way, if the logon dialog completely changes but still uses the same container, then the main frame never needs to change. It's called a model-view separation.
    public class LogonModel {
      public String userName;
      public String password;
      public boolean chooseOk = false;
    public class MainApp exnteds JFrame {
      // Creates the main app.. etc.
      // Now it wants to show a login prompt.. so it calls this method:
      public void showLoginPrompt() {
        LogonModel model = new LogonModel();
        LogonDialog dialog = new LogonDialog(model);
        // makes all the labels and text field goto the right position
        dialog.pack()
        // puts it in the middle of the screen
        dialog.setLocationRelativeTo(null);
        // shows it... the flow stops here and does
        // not return until they close the dialog.
        dialog.show();
        if(model.chooseOk) {
            System.out.println("The user typed the name: " + model.userName);
            System.out.println("The user typed the pass: " + model.password);
         } else {
            System.out.println("The user canceled logon!");
    public class LogonDialog extneds JDialog {
      LogonModel logonModel;
      public LogonDialog(LogonModel model) {
        this.logonModel = model;
      // somewhere in your dialog you will create the buttons...
      // create your OK button like this:
      JButton okButton = new JButton("OK");
      okButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          // fills the model with data
          model.chooseOk = true;
          model.userName = userNameTextField.getText();
          model.password = passwordTestField.getText();
          close(); // closes the logon dialog.
    }

  • Import statement code generation from Java-Platform Model in Java Studio

    Problem : When you create a Java-Platform Model type project in Java Studio 8.1 and as an example You would like to create an Attribute with java.util.Date type for a Class than how can You set this Attribute type in order to create the Code Generator the standard java package reference in Your code like : "import java.util.Date;" ? What is the right syntax in the "Type'" field of the Attribute Properties dialog ?

    You should also consider using NetBeans as an alternative to JSE8.1.
    Java Studio Enterprise 8.1 is itself built on top of NetBeans version 5.0. NetBeans is an ide developed as opensource at www.netbeans.org; it is extensible ide and so add-on modules can be developed to run on top of netbeans. And that is what JSE8.1 does; JSE 8.1 is NetBeans 5.0 plus several add-on modules (like UML etc).
    The latest stable version of NetBeans is 6.0 and provides improved versions of all relevant addons found in JSE.
    Home page: www.netbeans.org
    Download: http://www.netbeans.info/downloads/index.php
    Docs: http://www.netbeans.org/kb/index.html
    Further community resources (mailing lists, issue tracking etc) : http://www.netbeans.org/community/index.html
    wiki.netbeans.org
    NetBeans download is free. And since it is developed as an opensource project, the source is freely available under CDDL license.

  • Runtime error in process model and sequence still passes

    I am doing some custom initialization in the process model (in the ProcessSetup callback). I call a .NET module that may throw an exception under certain error conditions. This causes the the process model to jump to the Cleanup section of the process model (not the client sequence file cleanup) and that's okay. The problem I have is that in my UI I am getting the AxAppMgr_ExecutionEnded event and the e argument's exec.ResultStatus property indicates "Passed". I want it to indicate "Error" or "Incomplete" or something other than passed. The client sequence never ran at all. While it had no failures, it could not have passed.
    How do I force the status to be "Error" or something other than "Passed"?
    Solved!
    Go to Solution.

    Ryan,
    I am just getting back to this. Thanks for the response.
    I have my own sequence that gets called from ProcessSetup in the process model. That sequence sets up some station global variables for me including some Object References. One of the object references is a .NET object used to read a file. If that file does not exist, then the .NET object throws an exception which results in TestStand presenting a dialog with the error message and options about what to do next. I don't want our technicians getting that dialog box so I changed the Station Options to "Run Cleanup" on Run-time error. 
    The process model jumps to its Cleanup section when the run-time error is received. 
    Does that give you the information you need?
    Incidentally, I am able to look at the e.exec.ErrorObject in the AxAppMgr_EndExecution event handler and I can see the error as suggested by Doug above.
    Thanks.

  • MVC - Organizing models and managing GUI windows

    I'm having difficulty organizing my MVC models and basically controlling the whole application in general. My application works, but all the controlling logic is being dumped into the main class (Main.java). Here's a simple example of the problem I'm having:
    Objectives
    1) Display a list of Companies; i.e. Sun, Microsoft, Adobe, etc. (JFrame with a JList)
    2) The user select a Company and it pops up a new dialog with a list of Employees. (JDialog with a JList)
    Here are the classes I came up with:
    Models:
    1) CompanyListModel
    2) EmployeeListModel
    Listeners:
    1) CompanyListener
    Views:
    1) CompanyListFrame
    2) EmployeeListDialog
    Domain Objects:
    1) Company
    2) Employee
    And then there's the main application class. To implement the above objective, I've been using my main class to control the GUI.
    Here's an example of how I've implemented it.
    public class Main implements CompanyListener {
        /** Creates a new instance of Main */
        public Main() {
            CompanyListModel companyModel = new CompanyListModel();
            companyModel.addCompanyListener(this);
            CompanyListFrame gui = new CompanyListFrame(companyModel);
        // A company was selected.  Open a new dialog and display the employees
        public void companySelected(CompanyModel companyModel) {
            Company company = companyModel.getCompany();
            EmployeeListModel employeeModel = new EmployeeListModel(company));
            EmployeeListDialog = new EmployeeListDialog(employeeModel);
        public static void main(String[] args) {
            new Main();
    }My program is similiar design wise to the above, but contains many more classes. I'm still using my main class to control GUI logic (popping up new windows and creating models, etc). Thus, my main class implements like 5 different listeners. I'm sure this is a really poor design choice, I just don't know how else to implement it.
    I should not nest models... correct? I was thinking about nesting the models, i.e. CompanyListModel contains an EmployeeListModel, but then the CompanyListModel will need to spawn the EmployeeListDialog when a Company is selected, right? Thus, I'd be mixing the view with the model.
    Please provide some advice! :( Thanks!

    I'm sorry, I read your reply about 3 times and I've
    spent the last 20 minutes trying to implement it.
    I'm just not sure how the controllers are involved.
    Could you possibly provide source code for the
    controllers (and any part of the models / views that
    communicate with the controller)?No source code. Read about the MVC pattern.
    I feel like this is a wasted effort. I'm the sole
    entry level programmer at my company and I have only
    one year real wold experience . I work with about 10
    other senior level (microsoft) programmers and none
    of them code in this fashion. All of our
    applications are desktop applications using C#,
    C/C++, or scripting languages.What's a wasted effort? You posting a question? Me posting a response? You writing Java? You trying to think about how to do this properly?
    So why are you using Java if you're in a Microsoft shop? How's this working out with your co-workers?
    I feel like if I worked on a project with one of
    them, they would criticize me for using MVC and
    "complicating" such a simple issue.That's usually because Microsoft likes tying a particular text box to a column in a table. If you change the textbox value you change the database. Nice and easy, right?
    In trying to implement this solution, my workspace
    now has a huge load of classes for something so
    simple:
    Company
    CompanyFrame
    CompanyListController
    CompanyListListener
    CompanyListModel
    CompanyListPanel
    Employee
    EmployeeListDialog
    EmployeeListModel
    EmployeeListPanel
    Main
    11 classes and I left out the Emp Controller and
    Listener to simplify the example. The more classes
    that you have, the slower the application startup
    time. Moving the Views to JPanels as you suggested
    seemed smart but it wound up making it more
    difficult. I'm using NetBeans and Matisse and I
    don't believe you can use another JPanel class in the
    GUI editor unless you make it a bean.
    Traditionally, I would have implemented as follows.
    I would have completed it in 5 minutes and it would
    be much easier to understand what's going on:
    Company
    CompanyFrame - contains a list of companies
    Employee
    EmployeeListDialog - contains a list of employees
    Main
    Of course doing it this way I'd be mixing data with
    the view, but is that always a bad thing or is it
    only bad for large scale applications? Should MVC
    not be used for small modules like this?For small modules that are nothing more the CRUD operations, it might be that a simpler approach is fine. (PS - CRUD stands for Create/Read/Update/Delete, standard relational operations on tables. I'm not commenting on you or your code.)
    It only becomes a problem when that "simple" CRUD application decides to branch into something bigger. The approach of mingling view and data can become problematic then.
    It's still possible to have a clean application for small apps. I think most Microsoft programmers do it that way because the wizards and stuff they're used only allow it to be done that way.
    The reasons why I'm going away from my old "academic"
    programming practices is:
    1) I want to become a better programmer of course!Kudos to you. At least you're still thinking about it.
    2) There's alot of database queries in this
    application so I wanted to separate that from the GUI
    as much as possible. Thus, each model knows how to
    query the database and it's all done on separate
    threads.That's good motivation, too.
    I'd really like to do this right. If you could
    provide source that would be great. Also, are there
    any good books on desktop GUI development geared
    towards Java (or even C#)?I don't write for the desktop, so I'm not much help.
    I already purchased the e-book Desktop Java Live,
    which is great but they don't go into detail about
    MVC and instead use Model-Presenter which has been
    retired (according to Fowlers website). I found that
    section fairly confusing so I figured I'd start with
    MVC since it's more widespread (?).If you're reading Martin Fowler you're doing well.
    Thank you.I'm sorry that I'm not more helpful.
    %

  • Java Bean Model

    Is it possible to create a simple Java Bean (not EJBs) that connect to the data base where I can read/write to it??  And I want to hook it up to Web dynpro (import a java bean model).
    Please help!
    I have checked countless threads and tutorials, and am unable to put the pieces together.

    Hi Sana,
    I think  following links definitely help you to answer your queries
    PPt :-
    FEATURED EVENTS
    Demo link :-
    FEATURED EVENTS
    Best Regards,
    Anuj

  • What is difference between report programming and dialog programming?

    hi,
    what is difference between report programming and dialog programming? plz provide some example code
    bye

    ABAP programming
    Basically reports are used to read database and represent the results in lists.
    Reports are collections of processing blocks that the system calls depending on events.
    We can use reports to evaluate data from database tables.
    Reports are stand alone programs and controlled by events.
    A report itself never creates events
    steps in report:
    Processing the selection screen
    Reading the database
    Evaluating the data and creating lists
    Outputting a list.
    1st u write simple logics, after that u can enhance the code as step by step.
    http://venus.imp.mx/hilario/Libros/TeachYrslfAbap4/index.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/d1/802cfc454211d189710000e8322d00/frameset.htm
    http://www.sapdev.co.uk/reporting/reportinghome.htm
    Dialog Programming
    Structure of a Dialog Program
    A dialog program consists of the following basic components:
    Screens (dynpros)
    Each dialog in an SAP system is controlled by dynpros. A dynpro (DYnamic PROgram) consists of a screen and its flow logic and controls exactly one dialog step. The flow logic determines which processing takes place before displaying the screen (PBO-Process Before Output) and after receiving the entries the user made on the screen (PAI-Process After Input).
    The screen layout fixed in the Screen Painter determines the positions of input/output fields, text fields, and graphical elements such as radio buttons and checkboxes. In addition, the Menu Painter allows to store menus, icons, pushbuttons, and function keys in one or more GUI statuses. Dynpros and GUI statuses refer to the ABAP/4 program that control the sequence of the dynpros and GUI statuses at runtime.
    ABAP/4 module pool
    Each dynpro refers to exactly one ABAP/4 dialog program. Such a dialog program is also called a module pool, since it consists of interactive modules. The flow logic of a dynpro contains calls of modules from the corresponding module pool. Interactive modules called at the PBO event are used to prepare the screen template in accordance to the context, for example by setting field contents or by suppressing fields from the display that are not needed. Interactive modules called at the PAI event are used to check the user input and to trigger appropriate dialog steps, such as the update task.
    All dynpros to be called from within one transaction refer to a common module pool. The dynpros of a module pool are numbered. By default, the system stores for each dynpro the dynpro to be displayed next. This dynpro sequence or chain can be linear as well as cyclic. From within a dynpro chain, you can even call another dynpro chain and, after processing it, return to the original chain.
    Check this link for basics.
    http://sap.mis.cmich.edu/sap-abap/abap09/index.htm
    Check this link for Dialog Programming/Table Control
    http://www.planetsap.com/Tips_and_Tricks.htm#dialog
    Check this SAP Help for Dialog Program doc.
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9cdc35c111d1829f0000e829fbfe/content.htm
    Check this SAP Help link for Subscreens.
    http://help.sap.com/saphelp_nw70/helpdata/en/9f/dbabfe35c111d1829f0000e829fbfe/content.htm
    Check this link for subscreen demo program.
    http://abapcode.blogspot.com/2007/05/demo-program-to-create-subscreen-in.html
    Also check this link too.
    http://abapcode.blogspot.com/2007/06/dialog-programming-faq.html
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9cdc35c111d1829f0000e829fbfe/frameset.htm
    http://sap.mis.cmich.edu/sap-abap/abap09/sld004.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/52/670ba2439b11d1896f0000e8322d00/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/52/670c17439b11d1896f0000e8322d00/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/52/670c17439b11d1896f0000e8322d00/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9ccf35c111d1829f0000e829fbfe/frameset.htm
    http://abapprogramming.blogspot.com/

  • Problem with java swing button and loop

    Problem with java swing button and loop
    I�m using VAJ 4.0. and I�m doing normal GUI application. I have next problem.
    I have in the same class two jswing buttons named start (ivjGStart) and stop (ivjGStop) and private static int field named Status where initial value is 0. This buttons should work something like this:
    When I click on start button it must do next:
    Start button must set disenabled and Stop button must set enabled and selected. Field status is set to 1, because this is a condition in next procedure in some loop. And then procedure named IzvajajNeprekinjeno() is invoked.
    And when I click on stop button it must do next:
    Start button must set enabled and selected and Stop button must set disenabled.
    Field status is set to 0.
    This works everything fine without loop �do .. while� inside the procedure IzvajajNeprekinjeno(). But when used this loop the start button all the time stay (like) pressed. And this means that a can�t stop my loop.
    There is java code, so you can get better picture:
    /** start button */
    public void gStart_ActionEvents() {
    try {
    ivjGStart.setEnabled(false);
    ivjGStop.setEnabled(true);
    ivjGStop.setSelected(true);
    getJTextPane1().setText("Program is running ...");
    Status = 1;
    } catch (Exception e) {}
    /** stop button */
    public void gStop_ActionEvents() {
    try {
    ivjGStart.setEnabled(true);
    ivjGStart.setSelected(true);
    ivjGStop.setEnabled(false);
    getJTextPane1().setText("Program is NOT running ...");
    Status = 0;
    } catch (Exception e) {
    /** procedure IzvajajNeprekinjeno() */
    public void IzvajajNeprekinjeno() {  //RunLoop
    try {
    int zamik = 2000; //delay
    do {
    Thread.sleep(zamik);
    PreberiDat(); //procedure
    } while (Status == 1);
    } catch (Exception e) {
    So, I'm asking what I have to do, that start button will not all the time stay pressed? Or some other aspect of solving this problem.
    Any help will be appreciated.
    Best regards,
    Tomi

    This is a multi thread problem. When you start the gui, it is running in one thread. Lets call that GUI_Thread so we know what we are talking about.
    Since java is task-based this will happen if you do like this:
    1. Button "Start" is pressed. Thread running: GUI_Thread
    2. Event gStart_ActionEvents() called. Thread running: GUI_Thread
    3. Method IzvajajNeprekinjeno() called. Thread running: GUI_Thread
    4. Sleep in method IzvajajNeprekinjeno() on thread GUI_Thread
    5. Call PreberiDat(). Thread running: GUI_Thread
    6. Check status. If == 1, go tho 4. Thread running: GUI_Thread.
    Since the method IzvajajNeprekinjeno() (what does that mean?) and the GUI is running in the same thread and the event that the Start button has thrown isn't done yet, the program will go on in the IzvajajNeprekinjeno() method forever and never let you press the Stop-button.
    What you have to do is do put either the GUI in a thread of its own or start a new thread that will do the task of the IzvajajNeprekinjeno() method.
    http://java.sun.com/docs/books/tutorial/uiswing/index.html
    This tutorial explains how to build a multi threaded gui.
    /Lime

  • Install instructions for Search Modeler and integrating with Apps 11i

    Below are all the steps I took for creating integrating Search Modeler with an Oracle E-Business Suite 11.5.10.2 ATG RUP 7 instance called ERNIE.
    Much thanks to Oracle Support ( Rajesh Ghosh, Vikas Soolapani and Roger Ford), as this simply wouldn't have been possible without them.
    There are a few things in this document that may not be pertinent to your environment if you're doing this. I've made attempts to clarify those possibly optional sections in the documentation.
    I've broken the document down into the following multiple parts
    o Setting up a new RedHat 4.8 x86 server called ausSEARCHdev (The server is in AUStin, TX, is dedicated to SEARCH, and is for our DEV environment)
    o SES (Secure Enterprise Search 10.1.8.2 install
    o SES 10.1.8.4 patchset install
    o SES CPU patch apply
    o Standalone OC4J and ADF installation
    o Search Modeler installation and configuration
    o Configure ERNIE Apps instance to be on valid self-signed SSL certificate
    o Import ERNIE SSL certificate into SES and Search Modeler
    using aussearchdev initially
    rh4 x86, default oracle build
    ** htop and collectl are open source free performance monitoring packages we utilize**
    --start
    install htop and collectl
    wget http://dag.wieers.com/rpm/packages/htop/htop-0.7-1.el4.rf.i386.rpm
    rpm -ivh htop-0.7-1.el4.rf.i386.rpm
    wget http://downloads.sourceforge.net/project/collectl/collectl/collectl-3.4.0-4/collectl-3.4.0-4.noarch.rpm?use_mirror=voxel
    rpm -ivh collectl-3.4.0-4.noarch.rpm
    chkconfig collectl on
    service collectl start
    **We still need to install the necessary rpms so that collectl logs are compressed
    --end
    useradd -u 501 oracle
    groupadd -g 504 dba
    usermod -G 504 oracle
    verification:
         [root@aussearchdev ~]# su - oracle
         [oracle@aussearchdev ~]$ id
         uid=501(oracle) gid=501(oracle) groups=501(oracle),504(dba)
    passwd oracle
    ** /mnt/oraclebackup is a network dumpspot we use to hold Software installs, RPMs, etc
    ** /mnt/rpms is a network dumpspot we use to hold ISOs for OS software such as Redhat Linux
    mkdir /mnt/oraclebackup
    mkdir /mnt/rpms
    add the following to /etc/fstab
    XXXXXXX:/patches/oraclebackup /mnt/oraclebackup nfs defaults,hard,nolock 0 0
    XXXXXXX:/esxpress/nfs /mnt/rpms nfs rw,addr=XXX.XXX.XXX.XXX 0 0
    mount /mnt/rpms
    Next need to install various oracle needed RPMs.
    cd /mnt/rpms/rh40_upd8/RedHat/RPMS/
    rpm -ivh perl-Compress-Zlib-1.42-1.el4.i386.rpm
    rpm -ivh libaio-devel-0.3.105-2.i386.rpm
    rpm -ivh sysstat-5.0.5-25.el4.i386.rpm
    rpm -ivh unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
    service collectl restart
    cd /tmp
    wget http://oss.oracle.com/el4/oracle-validated/oracle-validated-1.0.0-18.el4.i386.rpm
    rpm -ivh oracle-validated-1.0.0-18.el4.i386.rpm
    Now we should have all the RPMs we need.
    cd /etc/sysconfig/oracle-validated
    ./oracle-validated-verify
    cd /var/log/oracle-validated/results
    more orakernel.log
    uname -a
    should return 2.6.9 or higher
    rpm -qa|grep gcc-
    should return 3.4.3 or higher
    rpm -qa|grep glibc
    should return 2.3.4-2.9 or higher
    rpm -qa|grep make
    should return 3.80 or higher
    rpm -qa|grep binutils
    should return 2.15.92.0.2 or higher
    rpm -qa|grep openmotif
    should return 2.2.3-9.RHEL4.1 or higher
    rpm -qa|grep compat-db
    should return 4.1.25-9 or higher
    rpm -qa|grep setarch
    should return 1.6-1 or higher
    cat /proc/sys/kernel/sem
    should return 250 32000 100 128 or higher (250 32000 100 142 in our case)
    cat /proc/sys/kernel/shmall (1073741824 in our case)
    should return 2097152 or higher
    cat /proc/sys/kernel/shmmax
    should return half the size of physical memory (4294967295 in our case - NO LARGER on 32-bit OS)
    cat /proc/sys/kernel/shmmni
    should return 4096
    cat /proc/sys/fs/file-max
    should return 65536 (327679 in our case)
    cat /proc/sys/net/ipv4/ip_local_port_range
    should return 1024 65000
    values in /etc/security/limits.conf set by oracle-validated rpm, no changes necessary
    add the following line to /etc/pam.d/login
    session required /lib/security/pam_limits.so
    add the following to /etc/profile
    if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi
    mkdir -p /d01/oracle
    chmod 777 /d01/oracle
    init 6 the box (aka reboot)
    Time to start the SES 10.1.8.2 installer
    running SES 10.1.8.2 installer
    as oracle
    cd /mnt/oraclebackup/deathstar_patches/SES/SES10182
    ./runInstaller
    search server name sesprod
    administrative password XXXXXXXX for dev,
    http port 7777
    destination path /d01/oracle/10.1.8/sesdev (dev)
    data storage path /d01/oracle/sesdevdata (dev)
    next
    inventory /d01/oracle/oraInventory
    dba group
    run orainstroot.sh as requested
    continue
    all tests should pass, continue
    finished clean
    tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
    tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
    Now we need to get to 10.1.8.4 of SES
    (yes, you need to keep the system up)
    cd /mnt/oraclebackup/deathstar_patches/SES/SES10184/ses_10184pst_linux/
    ./runInstaller
    Destination, choose sesdev
    Next
    Patchset successful
    tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
    tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
    Apply CPU Patch to SES
    CPU JAN 10 says patch 9119261 is required - but patch requires extended support contract
    CPU OCT 09 says patch 8836540 is required - but patch requires extended support contract
    CPU JUL 09 says patch 8534394 is required - but patch requires extended support contract
    CPU APR 09 says patch 8290534 is required - and you can actually download it
    Need opatch from 6880880
    cp -r /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/OPatch $ORACLE_HOME
    export PATH=$ORACLE_HOME/OPatch:$PATH
    shut down everything
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    cd /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/8290534
    opatch apply
    cd $ORACLE_HOME/cpu/CPUApr2009
    **Note: your sys password is what you set for your administrative password above
    sqlplus "sys/XXXXXX" as sysdba;
    startup
    @catcpu
    @?/rdbms/admin/utlrp
    shutdown immediate
    exit
    cd /d01/oracle/10.1.8/sesdev/cpu/view_recompile/
    sqlplus "sys/XXXXXXX" as sysdba;
    startup upgrade;
    @view_recompile_jan2008cpu.sql
    @?/rdbms/admin/utlrp
    shutdown immediate
    cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/ext
    mv mail.jar $HOME/mail.jar.backup02222010
    mv mailapi.jar $HOME/mailapi.jar.back02222010
    cp /d01/oracle/10.1.8/sesdev/search/lib/mail.jar .
    SES 10.1.8.4 is now installed and updated with latest available CPU
    tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
    tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
    we're going to go with the standalone OC4j 10.1.3.3 and Oracle ADF 10.1.3.3 method
    The URLs for these products are
    http://blogs.oracle.com/ebssearch/2009/10/available_now_oracle_search_modeler_11_for_oracle_e-business_suite_11i.html
    and specifically
    OC4J - http://download.oracle.com/otn/java/oc4j/101330/oc4j_extended_101330.zip
    ADF - http://www.oracle.com/technology/software/products/jdev/htdocs/adfinstaller10133.html
    OC4J install
    First you need to have Java 1.5 on the machine. Latest is 1.5.0_22. Package is in /mnt/oraclebackup/deathstar_patches/SES
    as root on aussearchdev
    cd /usr/local
    cp /mnt/oraclebackup/deathstar_patches/SES/jdk-1_5_0_22-linux-i586.bin .
    chmod 700 jdk-1_5_0_22-linux-i586.bin
    ./jdk-1_5_0_22-linux-i586.bin
    yes
    install OC4J just by copying over the directory
    as oracle on aussearchdev
    mkdir -p /d01/oracle/oc4j
    cd /d01/oracle/oc4j
    cp -r /mnt/oraclebackup/deathstar_patches/SES/oc4j/* .
    ADF install
    vi /mnt/oraclebackup/deathstar_patches/SES/adf/adfinstaller.properties
    change the following
    OracleHome = /mnt/oraclebackup/deathstar_patches/SES/adf
    DesHome = /d01/oracle/oc4j/
    type = OC4J
    as root
    cd /usr/bin
    rm java
    (yes)
    ln -s /usr/local/jdk1.5.0_22/bin/java
    su - oracle
    java -version     should now return 1.5.0_22
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    cd /mnt/oraclebackup/deathstar_patches/SES/adf
    java -jar runinstaller.jar -version
    returns The version for the ADF libraries being installed is 10.1.3.41.57 - yes, that is apparently 10.1.3.3.
    java -jar runinstaller.jar adfinstaller.properties
    output looks good, do not be concerned by
    WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/bc4j' whilst deleting bc4j application
    WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/datatags' whilst deleting datatags application
    as it was trying to delete the old version that didn't exist
    Start OC4J
    as oracle on aussearchdev
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export ORACLE_HOME=/d01/oracle/oc4j
    cd $ORACLE_HOME/bin
    ./oc4j -start
    you will be prompted for password - we're setting it. use XXXXXXXXXX
    after it's up, kill it (ctrl-c) and restart it with
    nohup ./oc4j -start &
    last lines in nohup.out is
    Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
    10/02/23 03:22:38 Oracle Containers for J2EE 10g (10.1.3.3.0) initialized
    So now on to search modeler installation, going by Installation steps in Note 781366.1
    8326128 - This is not a patch to be applied to the Apps, keep reading
    as oracle on aussearchdev
    cd /mnt/oraclebackup/deathstar_patches/SES/8326128
    mkdir -p /d01/oracle/oc4j/uploaded
    vi build.properties, changing
    installation.type=OC4J
    oracle.home=/d01/oracle/oc4j
    deploy.server=aussearchdev.domainname.com
    deploy.port=23791
    web.port=7777
    password=XXXXXXXXX
    extra.classpath=/d01/oracle/oc4j/uploaded
    now set the following environment values in your ssh session
    export ORACLE_HOME=/d01/oracle/oc4j
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
    ant main
    whole bunch of stuff to screen, errors due to undeploy something that doesn't exist. Finished after a minute with
    BUILD SUCCESSFUL
    Total time: 58 seconds
    Now on to post install steps
    restart OC4j
    cd $ORACLE_HOME/bin
    ./modeler.sh -shutdown -port 23791 -password r*l*r*0*
    export ORACLE_HOME=/d01/oracle/oc4j
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
    nohup ./modeler.sh -start &
    end of nohup.out should show
    Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
    Try going to http://aussearchdev:8888/modeler/faces/ModelerHome.jsp
    Should get login screen, but wait, we haven't installed Oracle Apps interface yet...
    Next let's do the Apps side of things
    Going by note 953378.1
    Using ERNIE (a development instance of E-Business Suite running 11.5.10.2 ATG RUP 7)
    as applmgr on ausernieapp (ausernieapp is our app tier)
    shut down apps services
    apps patch 8225631
    verify all the pre-req patches are in ERNIE
    select * from ad_bugs where bug_number = '5903765';
    select * from ad_bugs where bug_number = '6372396';
    select * from ad_bugs where bug_number = '3219567';
    select * from ad_bugs where bug_number = '3264822';
    select * from ad_bugs where bug_number = '3261254';
    select * from ad_bugs where bug_number = '5161676';
    select * from ad_bugs where bug_number = '3036401';
    select * from ad_bugs where bug_number = '3263588';
    select * from ad_bugs where bug_number = '3264818';
    select * from ad_bugs where bug_number = '3218526';
    select * from ad_bugs where bug_number = '3263645';
    select * from ad_bugs where bug_number = '4206794';
    select * from ad_bugs where bug_number = '3262486';
    select * from ad_bugs where bug_number = '3261243';
    select * from ad_bugs where bug_number = '2614213';
    select * from ad_bugs where bug_number = '3262159';
    select * from ad_bugs where bug_number = '2819091';
    select * from ad_bugs where bug_number = '3412795';
    patch went in smooth
    Log in to ERNIE Apps GUI as sysadmin user responsibility
    Give users such as sysadmin FND Search Crawler responsibility
    Go to system profile options, set
    set FND: Search Enabling Flag to Y at site level
    as applmgr on ausernieapp
    cd /d01/oracle/ernieappl/fnd/11.5.0/patch/115/sql
    sqlplus apps/$APPS_PWD @AFSRCHCF
    Enter SES endpoint URL [e.g. http://ap637atg.us.oracle.com:7780]: http://aussearchdev.domainname.com:7777
    Enter Apps Admin username [e.g. sysadmin]: sysadmin
    Enter Apps Admin password: sysadmin_password
    Enter SES Admin username [e.g. eqsys]: eqsys
    Enter SES Admin password: eqsyspassword <-- This is the same as sys's password
    on aussearchdev as oracle
    had to kill modeler and start all the processes, so
    kill -9 the modeler oc4j process, then
    cd $ORACLE_HOME/bin
    ./searchctl startall
    enter the password when prompted
    in IE browser go to
    http://aussearchdev.domainname.com:7777/search/admin
    log in with eqsys password
    global settings tab
    identity management setup
    click circle next to oracle.search.plugin.security.identity.ebs.EBS12IdentityPliginMgr
    (yes, we're going with 12 even though we use Oracle Apps 11i)
    http end point https://ausernieapp.domainname.com:8443/webservices/AppSearch/SecurityService
    username sysadmin
    password XXXXXXX
    finish
    Global Settings
    Federation Trusted Entitites
    ####entity name sysadmin
    ####Entity Password XXXXXXXX
    According to web conference with Oracle, this should NOT be eqsys but instead be sysadmin from above.
    Select the Use Entity Plug-in for authentication check box
    add
    Trying to go to http://aussearchdev.domainname.com:7777/search/query/search and login (sysadmin / password)
    stop midtier on both SES and Apps
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    ./adstpall.sh apps/$APPS_PWD on EBS app tier
    start midtier on both SES and Apps
    cd $ORACLE_HOME/bin
    ./searchctl startall
    ./adstrtal.sh apps/$APPS_PWD on EBS app tier
    Now try and log in to Oracle SES user interface to verify the configuration
    http://aussearchdev.domainname.com:7777/search/query
    Now start up modeler again
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export ORACLE_HOME=/d01/oracle/oc4j
    export PATH=$ORACLE_HOME/bin:$PATH
    cd $ORACLE_HOME/bin
    nohup ./modeler.sh -start &
    Works now.
    Now go to http://aussearchdev.domainname.com:8888/modeleradmin/AdminHome.jsp log in as oc4jadmin/XXXXXXX
    Configure new target
    Target Type 11i
    Description ERNIE
    Name ERNIE
    EBS Database Host Name auserniedb
    EBS Database Port 1521
    EBS Database SID ERNIE
    username apps
    password XXXXXXXXx
    oc4jadmin XXXXXXXx
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export ORACLE_HOME=/d01/oracle/oc4j
    export PATH=$ORACLE_HOME/bin:$PATH
    cd $ORACLE_HOME/j2ee/home
    java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXXXX -addDataSourceConnectionPool -name "ERNIE2-pool" -factoryClass "oracle.jdbc.pool.OracleDataSource" -dbUser "apps" -dbPassword "XXXXXXX" -url "jdbc:oracle:thin:@auserniedb.domainname.com:1521:ERNIE" -applicationName appsearch
    java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXX -addManagedDataSource -name "ERNIEDS" -jndiLocation "jdbc/ERNIEDS" -connectionPoolName "ERNIE2-pool" -applicationName appsearch
    http://aussearchdev.domainname.com:8888/modeler/faces/ModelerHome.jsp
    So, creating a self signed SSL certificate for ERNIE EBS instance (this will not work if you use an SSL certificate for another server like say, PROD)
    doing this on ausernieapp
    openssl genrsa -des3 -out ausernieapp.key 1024
    PEM key is ausernieapp
    openssl req -new -key ausernieapp.key -out ausernieapp.csr
    PEM key is ausernieapp
    Country US
    State Texas
    Locality Austin
    Organization Name Corporation
    Organizational Unit Name Information Technology
    Common Name ausernieapp.domainname.com
    Email address [email protected]
    No challenge password
    No optional company name
    Now let's remove the passphrase from the key
    cp ausernieapp.key ausernieapp.key.orig
    openssl rsa -in ausernieapp.key.orig -out ausernieapp.key
    Now let's generate a self-signed certificate
    openssl x509 -req -days 1000 -in ausernieapp.csr -signkey ausernieapp.key -out ausernieapp.crt
    Install the private key and certificate
    cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.crt
    cp server.crt server.crt.backup.03102010
    chown applmgr:applmgr server.crt.backup.03102010
    cp $HOME/ausernieapp.crt /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.crt/server.crt
    cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.key/
    cp server.key server.key.backup.03102010
    cp $HOME/ausernieapp.key /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.key/server.key
    chown applmgr:applmgr server.key.backup.03102010
    bounce apache as applmgr
    cd /d01/oracle/erniecomn/admin/scripts/ERNIE_ausernieapp
    ./adapcctl.sh stop
    ./adapcctl.sh start
    In IE
    https://ausernieapp.domainname.com:8443
    Continue
    Click on Certificate Error next to URL bar
    Install Certificate -> Next-> Place all certificates in the following store -> trusted root certificate authorities ->finish
    close browser, back to https://ausernieapp.domainname.com:8443
    no errors,
    Next step will be to import key into the SES and Search modelers
    as oracle on aussearchdev
    cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/security/
    cp cacerts cacerts.backup.03102010
    scp root@ausernieapp:/root/ausernieapp.crt .
    export LANG=c
    export PATH=$ORACLE_HOME/jdk/bin:$PATH
    keytool -keystore ./cacerts -storepass changeit -alias rootausernieapp -import -trustcacerts -file ausernieapp.crt
    --output
    Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Serial number: b4e92089cf73076f
    Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
    Certificate fingerprints:
    MD5: 2C:6B:EE:1A:63:6D:XX:A6:05:90:F6:XX:DD:88:F7:80
    SHA1: F8:DC:E5:2A:3E:68:XX:E1:EA:E4:75:AE:CC:4F:4A:10:2F:8A:FE:9B
    Trust this certificate? [no]: yes
    Certificate was added to keystore
    Now load our cert
    keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
    keytool -list -v -keystore ./cacerts now shows
    Alias name: rootausernieapp
    Creation date: Mar 10, 2010
    Entry type: trustedCertEntry
    Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Serial number: b4e92089cf73076f
    Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
    Certificate fingerprints:
    MD5: 2C:6B:EE:1A:63:6D:CB:XX:05:90:F6:78:DD:88:F7:80
    SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:FA:9E:10:2F:8A:FE:9B
    Now we need to load it into the search modeler keystore
    as root on aussearchdev
    export JAVA_HOME=/usr/local/jdk1.5.0_22/
    export PATH=$JAVA_HOME/bin:$PATH
    cd /usr/local/jdk1.5.0_22/jre/lib/security/
    scp root@ausernieapp:/root/ausernieapp.crt .
    output
    keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
    Enter keystore password: changeit
    Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Serial number: b4e92089cf73076f
    Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
    Certificate fingerprints:
    MD5: 2C:6B:EE:1A:63:6D:CB:A1:05:90:F6:78:DD:88:F7:80
    SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:4F:9E:10:2F:8A:FE:9B
    Trust this certificate? [no]: yes
    Certificate was added to keystore
    [root@aussearchdev security]#
    output
    For troubleshooting, if you go to end of /d01/oracle/10.1.8/sesdev/search/data/config/crawler.dat
    you can modify the logLevel from the default of 4 to 2 to get better debug data. No services need to be restarted, it will become active with the next crawl.
    While talking with Oracle, they mentioned the following patches
    The patches identified 8321527 and 7586924 are SES patches to help with indexing
    They also identified patch 9103851 which is an apps patch dealing with responsibilities <-- This is not yet available
    Applying patch 7586924
    as oracle on aussearchdev
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/7586924
    opatch apply
    cd $ORACLE_HOME/bin
    ./searchctl startall
    sqlplus eqsys/XXXXXX@SESDEV
    define SCH_NAME=EQSYS
    define PROXY_USER=EQPROXY
    define INST_USER=EQ_TEST
    @$ORACLE_HOME/search/admin/eq0pkh.sql
    @$ORACLE_HOME/search/admin/eq0plb.sql
    @$ORACLE_HOME/search/admin/eq0bug_7586924.sql
    cd $ORACLE_HOME/search/data/config/
    cp crawler.dat crawler.dat.backup.03102010
    vi crawler.dat
    We're using the Oracle E-Business Suite R12 crawler, so we will add the line
    USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
    as the line immediately preceding IMPORT -
    so the end of the file looks like this:
    # system properies: separated by space for multiple system properties or define multiple SYSTEM_PROPERTIES
    # logLevel values: DEBUG(2), INFO(4), WARN(6), ERROR(8), FATAL(10)
    SYSTEM_PROPERTIES -Doracle.search.logLevel=4 -Doracle.search.log=oracle.search.util.Log4jImpl
    USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
    IMPORT -
    Now on to patch 8321527
    cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/8321527
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    cd -
    opatch apply
    cd $ORACLE_HOME/bin
    ./searchctl startall
    sqlplus eqsys/XXXXXXX@SESDEV
    define SCH_NAME=EQSYS
    define PROXY_USER=EQPROXY
    select object_name from user_objects where status = 'INVALID';
    --should be no rows selected
    @$ORACLE_HOME/search/admin/eq0pkh.sql
    @$ORACLE_HOME/search/admin/eq0plb.sql
    --should be no rows selected
    restart SES
    cd -
    ./searchctl stopall
    ./searchctl startall

    Below are all the steps I took for creating integrating Search Modeler with an Oracle E-Business Suite 11.5.10.2 ATG RUP 7 instance called ERNIE.
    Much thanks to Oracle Support ( Rajesh Ghosh, Vikas Soolapani and Roger Ford), as this simply wouldn't have been possible without them.
    There are a few things in this document that may not be pertinent to your environment if you're doing this. I've made attempts to clarify those possibly optional sections in the documentation.
    I've broken the document down into the following multiple parts
    o Setting up a new RedHat 4.8 x86 server called ausSEARCHdev (The server is in AUStin, TX, is dedicated to SEARCH, and is for our DEV environment)
    o SES (Secure Enterprise Search 10.1.8.2 install
    o SES 10.1.8.4 patchset install
    o SES CPU patch apply
    o Standalone OC4J and ADF installation
    o Search Modeler installation and configuration
    o Configure ERNIE Apps instance to be on valid self-signed SSL certificate
    o Import ERNIE SSL certificate into SES and Search Modeler
    using aussearchdev initially
    rh4 x86, default oracle build
    ** htop and collectl are open source free performance monitoring packages we utilize**
    --start
    install htop and collectl
    wget http://dag.wieers.com/rpm/packages/htop/htop-0.7-1.el4.rf.i386.rpm
    rpm -ivh htop-0.7-1.el4.rf.i386.rpm
    wget http://downloads.sourceforge.net/project/collectl/collectl/collectl-3.4.0-4/collectl-3.4.0-4.noarch.rpm?use_mirror=voxel
    rpm -ivh collectl-3.4.0-4.noarch.rpm
    chkconfig collectl on
    service collectl start
    **We still need to install the necessary rpms so that collectl logs are compressed
    --end
    useradd -u 501 oracle
    groupadd -g 504 dba
    usermod -G 504 oracle
    verification:
         [root@aussearchdev ~]# su - oracle
         [oracle@aussearchdev ~]$ id
         uid=501(oracle) gid=501(oracle) groups=501(oracle),504(dba)
    passwd oracle
    ** /mnt/oraclebackup is a network dumpspot we use to hold Software installs, RPMs, etc
    ** /mnt/rpms is a network dumpspot we use to hold ISOs for OS software such as Redhat Linux
    mkdir /mnt/oraclebackup
    mkdir /mnt/rpms
    add the following to /etc/fstab
    XXXXXXX:/patches/oraclebackup /mnt/oraclebackup nfs defaults,hard,nolock 0 0
    XXXXXXX:/esxpress/nfs /mnt/rpms nfs rw,addr=XXX.XXX.XXX.XXX 0 0
    mount /mnt/rpms
    Next need to install various oracle needed RPMs.
    cd /mnt/rpms/rh40_upd8/RedHat/RPMS/
    rpm -ivh perl-Compress-Zlib-1.42-1.el4.i386.rpm
    rpm -ivh libaio-devel-0.3.105-2.i386.rpm
    rpm -ivh sysstat-5.0.5-25.el4.i386.rpm
    rpm -ivh unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
    service collectl restart
    cd /tmp
    wget http://oss.oracle.com/el4/oracle-validated/oracle-validated-1.0.0-18.el4.i386.rpm
    rpm -ivh oracle-validated-1.0.0-18.el4.i386.rpm
    Now we should have all the RPMs we need.
    cd /etc/sysconfig/oracle-validated
    ./oracle-validated-verify
    cd /var/log/oracle-validated/results
    more orakernel.log
    uname -a
    should return 2.6.9 or higher
    rpm -qa|grep gcc-
    should return 3.4.3 or higher
    rpm -qa|grep glibc
    should return 2.3.4-2.9 or higher
    rpm -qa|grep make
    should return 3.80 or higher
    rpm -qa|grep binutils
    should return 2.15.92.0.2 or higher
    rpm -qa|grep openmotif
    should return 2.2.3-9.RHEL4.1 or higher
    rpm -qa|grep compat-db
    should return 4.1.25-9 or higher
    rpm -qa|grep setarch
    should return 1.6-1 or higher
    cat /proc/sys/kernel/sem
    should return 250 32000 100 128 or higher (250 32000 100 142 in our case)
    cat /proc/sys/kernel/shmall (1073741824 in our case)
    should return 2097152 or higher
    cat /proc/sys/kernel/shmmax
    should return half the size of physical memory (4294967295 in our case - NO LARGER on 32-bit OS)
    cat /proc/sys/kernel/shmmni
    should return 4096
    cat /proc/sys/fs/file-max
    should return 65536 (327679 in our case)
    cat /proc/sys/net/ipv4/ip_local_port_range
    should return 1024 65000
    values in /etc/security/limits.conf set by oracle-validated rpm, no changes necessary
    add the following line to /etc/pam.d/login
    session required /lib/security/pam_limits.so
    add the following to /etc/profile
    if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi
    mkdir -p /d01/oracle
    chmod 777 /d01/oracle
    init 6 the box (aka reboot)
    Time to start the SES 10.1.8.2 installer
    running SES 10.1.8.2 installer
    as oracle
    cd /mnt/oraclebackup/deathstar_patches/SES/SES10182
    ./runInstaller
    search server name sesprod
    administrative password XXXXXXXX for dev,
    http port 7777
    destination path /d01/oracle/10.1.8/sesdev (dev)
    data storage path /d01/oracle/sesdevdata (dev)
    next
    inventory /d01/oracle/oraInventory
    dba group
    run orainstroot.sh as requested
    continue
    all tests should pass, continue
    finished clean
    tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
    tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
    Now we need to get to 10.1.8.4 of SES
    (yes, you need to keep the system up)
    cd /mnt/oraclebackup/deathstar_patches/SES/SES10184/ses_10184pst_linux/
    ./runInstaller
    Destination, choose sesdev
    Next
    Patchset successful
    tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
    tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
    Apply CPU Patch to SES
    CPU JAN 10 says patch 9119261 is required - but patch requires extended support contract
    CPU OCT 09 says patch 8836540 is required - but patch requires extended support contract
    CPU JUL 09 says patch 8534394 is required - but patch requires extended support contract
    CPU APR 09 says patch 8290534 is required - and you can actually download it
    Need opatch from 6880880
    cp -r /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/OPatch $ORACLE_HOME
    export PATH=$ORACLE_HOME/OPatch:$PATH
    shut down everything
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    cd /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/8290534
    opatch apply
    cd $ORACLE_HOME/cpu/CPUApr2009
    **Note: your sys password is what you set for your administrative password above
    sqlplus "sys/XXXXXX" as sysdba;
    startup
    @catcpu
    @?/rdbms/admin/utlrp
    shutdown immediate
    exit
    cd /d01/oracle/10.1.8/sesdev/cpu/view_recompile/
    sqlplus "sys/XXXXXXX" as sysdba;
    startup upgrade;
    @view_recompile_jan2008cpu.sql
    @?/rdbms/admin/utlrp
    shutdown immediate
    cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/ext
    mv mail.jar $HOME/mail.jar.backup02222010
    mv mailapi.jar $HOME/mailapi.jar.back02222010
    cp /d01/oracle/10.1.8/sesdev/search/lib/mail.jar .
    SES 10.1.8.4 is now installed and updated with latest available CPU
    tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
    tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
    we're going to go with the standalone OC4j 10.1.3.3 and Oracle ADF 10.1.3.3 method
    The URLs for these products are
    http://blogs.oracle.com/ebssearch/2009/10/available_now_oracle_search_modeler_11_for_oracle_e-business_suite_11i.html
    and specifically
    OC4J - http://download.oracle.com/otn/java/oc4j/101330/oc4j_extended_101330.zip
    ADF - http://www.oracle.com/technology/software/products/jdev/htdocs/adfinstaller10133.html
    OC4J install
    First you need to have Java 1.5 on the machine. Latest is 1.5.0_22. Package is in /mnt/oraclebackup/deathstar_patches/SES
    as root on aussearchdev
    cd /usr/local
    cp /mnt/oraclebackup/deathstar_patches/SES/jdk-1_5_0_22-linux-i586.bin .
    chmod 700 jdk-1_5_0_22-linux-i586.bin
    ./jdk-1_5_0_22-linux-i586.bin
    yes
    install OC4J just by copying over the directory
    as oracle on aussearchdev
    mkdir -p /d01/oracle/oc4j
    cd /d01/oracle/oc4j
    cp -r /mnt/oraclebackup/deathstar_patches/SES/oc4j/* .
    ADF install
    vi /mnt/oraclebackup/deathstar_patches/SES/adf/adfinstaller.properties
    change the following
    OracleHome = /mnt/oraclebackup/deathstar_patches/SES/adf
    DesHome = /d01/oracle/oc4j/
    type = OC4J
    as root
    cd /usr/bin
    rm java
    (yes)
    ln -s /usr/local/jdk1.5.0_22/bin/java
    su - oracle
    java -version     should now return 1.5.0_22
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    cd /mnt/oraclebackup/deathstar_patches/SES/adf
    java -jar runinstaller.jar -version
    returns The version for the ADF libraries being installed is 10.1.3.41.57 - yes, that is apparently 10.1.3.3.
    java -jar runinstaller.jar adfinstaller.properties
    output looks good, do not be concerned by
    WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/bc4j' whilst deleting bc4j application
    WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/datatags' whilst deleting datatags application
    as it was trying to delete the old version that didn't exist
    Start OC4J
    as oracle on aussearchdev
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export ORACLE_HOME=/d01/oracle/oc4j
    cd $ORACLE_HOME/bin
    ./oc4j -start
    you will be prompted for password - we're setting it. use XXXXXXXXXX
    after it's up, kill it (ctrl-c) and restart it with
    nohup ./oc4j -start &
    last lines in nohup.out is
    Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
    10/02/23 03:22:38 Oracle Containers for J2EE 10g (10.1.3.3.0) initialized
    So now on to search modeler installation, going by Installation steps in Note 781366.1
    8326128 - This is not a patch to be applied to the Apps, keep reading
    as oracle on aussearchdev
    cd /mnt/oraclebackup/deathstar_patches/SES/8326128
    mkdir -p /d01/oracle/oc4j/uploaded
    vi build.properties, changing
    installation.type=OC4J
    oracle.home=/d01/oracle/oc4j
    deploy.server=aussearchdev.domainname.com
    deploy.port=23791
    web.port=7777
    password=XXXXXXXXX
    extra.classpath=/d01/oracle/oc4j/uploaded
    now set the following environment values in your ssh session
    export ORACLE_HOME=/d01/oracle/oc4j
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
    ant main
    whole bunch of stuff to screen, errors due to undeploy something that doesn't exist. Finished after a minute with
    BUILD SUCCESSFUL
    Total time: 58 seconds
    Now on to post install steps
    restart OC4j
    cd $ORACLE_HOME/bin
    ./modeler.sh -shutdown -port 23791 -password r*l*r*0*
    export ORACLE_HOME=/d01/oracle/oc4j
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
    nohup ./modeler.sh -start &
    end of nohup.out should show
    Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
    Try going to http://aussearchdev:8888/modeler/faces/ModelerHome.jsp
    Should get login screen, but wait, we haven't installed Oracle Apps interface yet...
    Next let's do the Apps side of things
    Going by note 953378.1
    Using ERNIE (a development instance of E-Business Suite running 11.5.10.2 ATG RUP 7)
    as applmgr on ausernieapp (ausernieapp is our app tier)
    shut down apps services
    apps patch 8225631
    verify all the pre-req patches are in ERNIE
    select * from ad_bugs where bug_number = '5903765';
    select * from ad_bugs where bug_number = '6372396';
    select * from ad_bugs where bug_number = '3219567';
    select * from ad_bugs where bug_number = '3264822';
    select * from ad_bugs where bug_number = '3261254';
    select * from ad_bugs where bug_number = '5161676';
    select * from ad_bugs where bug_number = '3036401';
    select * from ad_bugs where bug_number = '3263588';
    select * from ad_bugs where bug_number = '3264818';
    select * from ad_bugs where bug_number = '3218526';
    select * from ad_bugs where bug_number = '3263645';
    select * from ad_bugs where bug_number = '4206794';
    select * from ad_bugs where bug_number = '3262486';
    select * from ad_bugs where bug_number = '3261243';
    select * from ad_bugs where bug_number = '2614213';
    select * from ad_bugs where bug_number = '3262159';
    select * from ad_bugs where bug_number = '2819091';
    select * from ad_bugs where bug_number = '3412795';
    patch went in smooth
    Log in to ERNIE Apps GUI as sysadmin user responsibility
    Give users such as sysadmin FND Search Crawler responsibility
    Go to system profile options, set
    set FND: Search Enabling Flag to Y at site level
    as applmgr on ausernieapp
    cd /d01/oracle/ernieappl/fnd/11.5.0/patch/115/sql
    sqlplus apps/$APPS_PWD @AFSRCHCF
    Enter SES endpoint URL [e.g. http://ap637atg.us.oracle.com:7780]: http://aussearchdev.domainname.com:7777
    Enter Apps Admin username [e.g. sysadmin]: sysadmin
    Enter Apps Admin password: sysadmin_password
    Enter SES Admin username [e.g. eqsys]: eqsys
    Enter SES Admin password: eqsyspassword <-- This is the same as sys's password
    on aussearchdev as oracle
    had to kill modeler and start all the processes, so
    kill -9 the modeler oc4j process, then
    cd $ORACLE_HOME/bin
    ./searchctl startall
    enter the password when prompted
    in IE browser go to
    http://aussearchdev.domainname.com:7777/search/admin
    log in with eqsys password
    global settings tab
    identity management setup
    click circle next to oracle.search.plugin.security.identity.ebs.EBS12IdentityPliginMgr
    (yes, we're going with 12 even though we use Oracle Apps 11i)
    http end point https://ausernieapp.domainname.com:8443/webservices/AppSearch/SecurityService
    username sysadmin
    password XXXXXXX
    finish
    Global Settings
    Federation Trusted Entitites
    ####entity name sysadmin
    ####Entity Password XXXXXXXX
    According to web conference with Oracle, this should NOT be eqsys but instead be sysadmin from above.
    Select the Use Entity Plug-in for authentication check box
    add
    Trying to go to http://aussearchdev.domainname.com:7777/search/query/search and login (sysadmin / password)
    stop midtier on both SES and Apps
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    ./adstpall.sh apps/$APPS_PWD on EBS app tier
    start midtier on both SES and Apps
    cd $ORACLE_HOME/bin
    ./searchctl startall
    ./adstrtal.sh apps/$APPS_PWD on EBS app tier
    Now try and log in to Oracle SES user interface to verify the configuration
    http://aussearchdev.domainname.com:7777/search/query
    Now start up modeler again
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export ORACLE_HOME=/d01/oracle/oc4j
    export PATH=$ORACLE_HOME/bin:$PATH
    cd $ORACLE_HOME/bin
    nohup ./modeler.sh -start &
    Works now.
    Now go to http://aussearchdev.domainname.com:8888/modeleradmin/AdminHome.jsp log in as oc4jadmin/XXXXXXX
    Configure new target
    Target Type 11i
    Description ERNIE
    Name ERNIE
    EBS Database Host Name auserniedb
    EBS Database Port 1521
    EBS Database SID ERNIE
    username apps
    password XXXXXXXXx
    oc4jadmin XXXXXXXx
    export JAVA_HOME=/usr/local/jdk1.5.0_22
    export ORACLE_HOME=/d01/oracle/oc4j
    export PATH=$ORACLE_HOME/bin:$PATH
    cd $ORACLE_HOME/j2ee/home
    java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXXXX -addDataSourceConnectionPool -name "ERNIE2-pool" -factoryClass "oracle.jdbc.pool.OracleDataSource" -dbUser "apps" -dbPassword "XXXXXXX" -url "jdbc:oracle:thin:@auserniedb.domainname.com:1521:ERNIE" -applicationName appsearch
    java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXX -addManagedDataSource -name "ERNIEDS" -jndiLocation "jdbc/ERNIEDS" -connectionPoolName "ERNIE2-pool" -applicationName appsearch
    http://aussearchdev.domainname.com:8888/modeler/faces/ModelerHome.jsp
    So, creating a self signed SSL certificate for ERNIE EBS instance (this will not work if you use an SSL certificate for another server like say, PROD)
    doing this on ausernieapp
    openssl genrsa -des3 -out ausernieapp.key 1024
    PEM key is ausernieapp
    openssl req -new -key ausernieapp.key -out ausernieapp.csr
    PEM key is ausernieapp
    Country US
    State Texas
    Locality Austin
    Organization Name Corporation
    Organizational Unit Name Information Technology
    Common Name ausernieapp.domainname.com
    Email address [email protected]
    No challenge password
    No optional company name
    Now let's remove the passphrase from the key
    cp ausernieapp.key ausernieapp.key.orig
    openssl rsa -in ausernieapp.key.orig -out ausernieapp.key
    Now let's generate a self-signed certificate
    openssl x509 -req -days 1000 -in ausernieapp.csr -signkey ausernieapp.key -out ausernieapp.crt
    Install the private key and certificate
    cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.crt
    cp server.crt server.crt.backup.03102010
    chown applmgr:applmgr server.crt.backup.03102010
    cp $HOME/ausernieapp.crt /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.crt/server.crt
    cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.key/
    cp server.key server.key.backup.03102010
    cp $HOME/ausernieapp.key /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.key/server.key
    chown applmgr:applmgr server.key.backup.03102010
    bounce apache as applmgr
    cd /d01/oracle/erniecomn/admin/scripts/ERNIE_ausernieapp
    ./adapcctl.sh stop
    ./adapcctl.sh start
    In IE
    https://ausernieapp.domainname.com:8443
    Continue
    Click on Certificate Error next to URL bar
    Install Certificate -> Next-> Place all certificates in the following store -> trusted root certificate authorities ->finish
    close browser, back to https://ausernieapp.domainname.com:8443
    no errors,
    Next step will be to import key into the SES and Search modelers
    as oracle on aussearchdev
    cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/security/
    cp cacerts cacerts.backup.03102010
    scp root@ausernieapp:/root/ausernieapp.crt .
    export LANG=c
    export PATH=$ORACLE_HOME/jdk/bin:$PATH
    keytool -keystore ./cacerts -storepass changeit -alias rootausernieapp -import -trustcacerts -file ausernieapp.crt
    --output
    Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Serial number: b4e92089cf73076f
    Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
    Certificate fingerprints:
    MD5: 2C:6B:EE:1A:63:6D:XX:A6:05:90:F6:XX:DD:88:F7:80
    SHA1: F8:DC:E5:2A:3E:68:XX:E1:EA:E4:75:AE:CC:4F:4A:10:2F:8A:FE:9B
    Trust this certificate? [no]: yes
    Certificate was added to keystore
    Now load our cert
    keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
    keytool -list -v -keystore ./cacerts now shows
    Alias name: rootausernieapp
    Creation date: Mar 10, 2010
    Entry type: trustedCertEntry
    Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Serial number: b4e92089cf73076f
    Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
    Certificate fingerprints:
    MD5: 2C:6B:EE:1A:63:6D:CB:XX:05:90:F6:78:DD:88:F7:80
    SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:FA:9E:10:2F:8A:FE:9B
    Now we need to load it into the search modeler keystore
    as root on aussearchdev
    export JAVA_HOME=/usr/local/jdk1.5.0_22/
    export PATH=$JAVA_HOME/bin:$PATH
    cd /usr/local/jdk1.5.0_22/jre/lib/security/
    scp root@ausernieapp:/root/ausernieapp.crt .
    output
    keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
    Enter keystore password: changeit
    Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
    Serial number: b4e92089cf73076f
    Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
    Certificate fingerprints:
    MD5: 2C:6B:EE:1A:63:6D:CB:A1:05:90:F6:78:DD:88:F7:80
    SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:4F:9E:10:2F:8A:FE:9B
    Trust this certificate? [no]: yes
    Certificate was added to keystore
    [root@aussearchdev security]#
    output
    For troubleshooting, if you go to end of /d01/oracle/10.1.8/sesdev/search/data/config/crawler.dat
    you can modify the logLevel from the default of 4 to 2 to get better debug data. No services need to be restarted, it will become active with the next crawl.
    While talking with Oracle, they mentioned the following patches
    The patches identified 8321527 and 7586924 are SES patches to help with indexing
    They also identified patch 9103851 which is an apps patch dealing with responsibilities <-- This is not yet available
    Applying patch 7586924
    as oracle on aussearchdev
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/7586924
    opatch apply
    cd $ORACLE_HOME/bin
    ./searchctl startall
    sqlplus eqsys/XXXXXX@SESDEV
    define SCH_NAME=EQSYS
    define PROXY_USER=EQPROXY
    define INST_USER=EQ_TEST
    @$ORACLE_HOME/search/admin/eq0pkh.sql
    @$ORACLE_HOME/search/admin/eq0plb.sql
    @$ORACLE_HOME/search/admin/eq0bug_7586924.sql
    cd $ORACLE_HOME/search/data/config/
    cp crawler.dat crawler.dat.backup.03102010
    vi crawler.dat
    We're using the Oracle E-Business Suite R12 crawler, so we will add the line
    USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
    as the line immediately preceding IMPORT -
    so the end of the file looks like this:
    # system properies: separated by space for multiple system properties or define multiple SYSTEM_PROPERTIES
    # logLevel values: DEBUG(2), INFO(4), WARN(6), ERROR(8), FATAL(10)
    SYSTEM_PROPERTIES -Doracle.search.logLevel=4 -Doracle.search.log=oracle.search.util.Log4jImpl
    USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
    IMPORT -
    Now on to patch 8321527
    cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/8321527
    cd $ORACLE_HOME/bin
    ./searchctl stopall
    cd -
    opatch apply
    cd $ORACLE_HOME/bin
    ./searchctl startall
    sqlplus eqsys/XXXXXXX@SESDEV
    define SCH_NAME=EQSYS
    define PROXY_USER=EQPROXY
    select object_name from user_objects where status = 'INVALID';
    --should be no rows selected
    @$ORACLE_HOME/search/admin/eq0pkh.sql
    @$ORACLE_HOME/search/admin/eq0plb.sql
    --should be no rows selected
    restart SES
    cd -
    ./searchctl stopall
    ./searchctl startall

  • Object Oriented Modelling and Code Generator

    i have a final yr project on java--any help plzz
    Objectives:
    In software development we make extensive use of models to capture details about objects in a domain, the attributes of the objects and the relationships between the objects. Once complete, these models also contain constraints on the objects and their attributes.
    The aim of this project will be to develop a GUI to draw an appropriate software model and to automatically generate a set of Java classes consistent with the model that can be used to rapidly implement the software.
    This research will aim at analysing the different modelling techniques and the mapping of these models to java codes.
    note: any good advice..

    Hello there..
    I Together Control is one of the best tool that can serve ur purpose
    this is pretty good Tool.
    Specially auto code generation is cool.
    Look in to borland site..( They now took overtogether ) for free eval version ..
    Regards
    Manu
    Syntel

  • Java Security Model: Java Protection Domains

    1.     Policy Configuration
    Until now, security policy was hard-coded in the security manager used by Java applications. This gives us the effective but rigid Java sandbox for applets.A major enhancement to the Java sandbox is the separation of policy from mechanism. Policy is now expressed in a separate, persistent format. The policy is represented in simple ascii, and can be modified and displayed by any tools that support the policy syntax specification. This allows:
    o     Configurable policies -- no longer is the security policy hard-coded into the application.
    o     Flexible policies -- Since the policy is configurable, system administrators can enforce global polices for the enterprise. If permitted by the enterprise's global policy, end-users can refine the policy for their desktop.
    o     Fine-grain policies -- The policy configuration file uses a simple, extensible syntax that allows you to specify access on specific files or to particular network hosts. Access to resources can be granted only to code signed by trusted principals.
    o     Application policies -- The sandbox is generalized so that applications of any stripe can use the policy mechanism. Previously, to establish a security policy for an application, an developer needed to implement a subclass of the SecurityManager, and hard-code the application's policies in that subclass. Now, the application can make use of the policy file and the extensible Permission object to build an application whose policy is separate from the implementation of the application.
    o     Extensible policies -- Application developers can choose to define new resource types that require fine-grain access control. They need only define a new Permission object and a method that the system invokes to make access decisions. The policy configuration file and policy tools automatically support application-defined permissions. For example, an application could define a CheckBook object and a CheckBookPermission.
    2.     X.509v3 Certificate APIs
    Public-key cryptography is an effective tool for associating an identity with a piece of code. JavaSoft is introducing API support in the core APIs for X.509v3 certificates. This allows system administrators to use certificates from enterprise Certificate Authorities (CAs), as well as trusted third-party CAs, to cryptographically establish identities.
    3.     Protection Domains
    The central architectural feature of the Java security model is its concept of a Protection Domain. The Java sandbox is an example of a Protection Domain that places tight controls around the execution of downloaded code. This concept is generalized so that each Java class executes within one and only one Protection Domain, with associated permissions.
    When code is loaded, its Protection Domain comes into existence. The Protection Domain has two attributes - a signer and a location. The signer could be null if the code is not signed by anyone. The location is the URL where the Java classes reside. The system consults the global policy on behalf of the new Protection Domain. It derives the set of permissions for the Protection Domain based on its signer/location attributes. Those permissions are put into the Protection Domain's bag of permissions.
    4.     Access Decisions
    Access decisions are straightforward. When code tries to access a protected resource, it creates an access request. If the request matches a permission contained in the bag of permissions, then access is granted. Otherwise, access is denied. This simple way of making access decisions extends easily to application-defined resources and access control. For example, the banking application allows access to the CheckBook only when the executing code holds the appropriate CheckBookPermission.
    Sandbox model for Security
    Java is supported in applications and applets, small programs that spurred Java's early growth and are executable in a browser environment. The applet code is downloaded at runtime and executes in the context of a JVM hosted by the browser. An applet's code can be downloaded from anywhere in the network, so Java's early designers thought such code should not be given unlimited access to the target system. That led to the sandbox model -- the security model introduced with JDK 1.0.
    The sandbox model deems all code downloaded from the network untrustworthy, and confines the code to a limited area of the browser -- the sandbox. For instance, code downloaded from the network could not update the local file system. It's probably more accurate to call this a "fenced-in" model, since a sandbox does not connote strict confinement.
    While this may seem a very secure approach, there are inherent problems. First, it dictates a rigid policy that is closely tied to the implementation. Second, it's seldom a good idea to put all one's eggs in one basket -- that is, it's unwise to rely entirely on one approach to provide overall system security.
    Security needs to be layered for depth of defense and flexible enough to accommodate different policies -- the sandbox model is neither.
    java.security.ProtectionDomain
    This class represents a unit of protection within the Java application environment, and is typically associated with a concept of "principal," where a principal is an entity in the computer system to which permissions (and as a result, accountability) are granted.
    A domain conceptually encloses a set of classes whose instances are granted the same set of permissions. Currently, a domain is uniquely identified by a CodeSource, which encapsulates two characteristics of the code running inside the domain: the codebase (java.net.URL), and a set of certificates (of type java.security.cert.Certificate) for public keys that correspond to the private keys that signed all code in this domain. Thus, classes signed by the same keys and from the same URL are placed in the same domain.
    A domain also encompasses the permissions granted to code in the domain, as determined by the security policy currently in effect.
    Classes that have the same permissions but are from different code sources belong to different domains.
    A class belongs to one and only one ProtectionDomain.
    Note that currently in Java 2 SDK, v 1.2, protection domains are created "on demand" as a result of class loading. The getProtectionDomain method in java.lang.Class can be used to look up the protection domain that is associated with a given class. Note that one must have the appropriate permission (the RuntimePermission "getProtectionDomain") to successfully invoke this method.
    Today all code shipped as part of the Java 2 SDK is considered system code and run inside the unique system domain. Each applet or application runs in its appropriate domain, determined by its code source.
    It is possible to ensure that objects in any non-system domain cannot automatically discover objects in another non-system domain. This partition can be achieved by careful class resolution and loading, for example, using different classloaders for different domains. However, SecureClassLoader (or its subclasses) can, at its choice, load classes from different domains, thus allowing these classes to co-exist within the same name space (as partitioned by a classloader).
    jarsigner and keytool
    example : cd D:\EicherProject\EicherWEB\Web Content jarsigner -keystore eicher.store source.jar eichercert
    The javakey tool from JDK 1.1 has been replaced by two tools in Java 2.
    One tool manages keys and certificates in a database. The other is responsible for signing and verifying JAR files. Both tools require access to a keystore that contains certificate and key information to operate. The keystore replaces the identitydb.obj from JDK 1.1. New to Java 2 is the notion of policy, which controls what resources applets are granted access to outside of the sandbox (see Chapter 3).
    The javakey replacement tools are both command-line driven, and neither requires the use of the awkward directive files required in JDK 1.1.x. Management of keystores, and the generation of keys and certificates, is carried out by keytool. jarsigner uses certificates to sign JAR files and to verify the signatures found on signed JAR files.
    Here we list simple steps of doing the signing. We assume that JDK 1.3 is installed and the tools jarsigner and keytool that are part of JDK are in the execution PATH. Following are Unix commands, however with proper changes, these could be used in Windows as well.
    1. First generate a key pair for our Certificate:
    keytool -genkey -keyalg rsa -alias AppletCert
    2. Generate a certification-signing request.
    keytool -certreq -alias AppletCert > CertReq.pem
    3. Send this CertReq.pem to VeriSign/Thawte webform. Let the signed reply from them be SignedCert.pem.
    4. Import the chain into keystore:
    keytool -import -alias AppletCert -file SignedCert.pem
    5. Sign the CyberVote archive �TeleVote.jar�:
    jarsigner TeleVote.jar AppletCert
    This signed applet TeleVote.jar can now be made available to the web server. For testing purpose we can have our own test root CA. Following are the steps to generate a root CA by using openssl.
    1. Generate a key pair for root CA:
    openssl genrsa -des3 -out CyberVoteCA.key 1024
    2. Generate an x509 certificate using the above keypair:
    openssl req -new -x509 -days key CyberVoteCA.key -out CyberVoteCA.crt
    3. Import the Certificate to keystore.
    keytool -import -alias CyberVoteRoot -file CyberVoteCA.crt
    Now, in the step 3 of jar signing above, instead of sending the request certificate to VeriSign/Thawte webform for signing, we 365 - can sign using our newly created root CA using this command:
    openssl x509 -req -CA CyberVoteCA.crt -CAkey CyberVoteCA.key -days 365 -in CertReq.pem -out SignedCert.pem �Cacreateserial
    However, our test root CA has to be imported to the keystore of voter�s web browser in some way. [This was not investigated. We used some manual importing procedure which is not recommended way]
    The Important Classes
    The MessageDigest class, which is used in current CyberVote mockup system (see section 2), is an engine class designed to provide the functionality of cryptographically secure message digests such as SHA-1 or MD5. A cryptographically secure message digest takes arbitrary-sized input (a byte array), and generates a fixed-size output, called a digest or hash. A digest has the following properties:
    � It should be computationally infeasible to find two messages that hashed to the same value.
    � The digest does not reveal anything about the input that was used to generate it.
    Message digests are used to produce unique and reliable identifiers of data. They are sometimes called the "digital fingerprints" of data.
    The (Digital)Signature class is an engine class designed to provide the functionality of a cryptographic digital signature algorithm such as DSA or RSA with MD5. A cryptographically secure signature algorithm takes arbitrary-sized input and a private key and generates a relatively short (often fixed-size) string of bytes, called the signature, with the following properties:
    � Given the public key corresponding to the private key used to generate the signature, it should be possible to verify the authenticity and integrity of the input.
    � The signature and the public key do not reveal anything about the private key.
    A Signature object can be used to sign data. It can also be used to verify whether or not an alleged signature is in fact the authentic signature of the data associated with it.
    ----Cheers
    ---- Dinesh Vishwakarma

    Hi,
    these concepts are used and implemented in jGuard(www.jguard.net) which enable easy JAAS integration into j2ee webapps across application servers.
    cheers,
    Charles(jGuard team).

  • What is the correct CIM model and CR content version to import into SLD?

    Hi All,
    I just met a difficulty that I can not find the correct import version of CIM model and CR content.
    Could anyone share some valuable suggestions?
    Situations now:
    I installed ECC6 SR3 with ABAP+ Java stacks, after installation successfully, I logged onto SLD through http://xxx:50000/sld
    since my CIM model and CR content version is too low, so I want to upgrade it.
    The currect version is as below:
    Model Version (sld/new):     1.5.24
    SAP CR Content Version (sld/new):     SAP_CR 2.0 (produced 03/17/2005)
    Namespace     Model Version     Classes     Instances     Associations     Total Objects
    sld/active       1.5.24               908     36381     60183             97472
    I have read note 669669 carefully and downloaded all the relevant versions before updating, the the results are not correct. something like "Unknow status -1" "import anyway" appears.
    So, could anyone tell me the correct update file and sequence?
    Thank you very much in advance.
    Best regards,
    Nick

    Hi Raghu,
    Thanks for your quick reply.
    I have downloaded 5 files:
    cimsap51506_0-20005942.zip     SP06 for SAP CR CONTENT UP TO 2009
    CRDelta1418_0-10003379.ZIP     SP18 for SAP CR CONTENT 2.0
    CRDelta1511_0-10004549.ZIP     SP11 for SAP CR CONTENT UP TO 2007
    CRDelta41514_0-10006428.ZIP     SP14 for SAP CR CONTENT UP TO 2008
    CRDelta51506_0-20005942.ZIP     SP06 for SAP CR CONTENT UP TO 2009
    and the update sequence are the same as above, that is to say, first I update CIM model version successfully from 1.5.24 to 1.5.45, and then, I upload CRDelta1418_0-10003379.ZIP which gave me an error message "Unknown status -1", even how many times I click "Import anyway", it's useless.
    after then, I tried to upload CRDelta1511_0-10004549.ZIP directly, but it also refused. warning message is "The selected aggregate import is not applicable to the current content version SAP_CR 2.0 of the target namespace.", I clicked button "Import anyway", but it's useless since there contains 0 objects, I don't know why, the message shows "The import will upgrade the content of export line SAP_CR from the current version 2.0 to version 4.0.
    Contains 0 objects."
    The file CRDelta1511_0-10004549.ZIP is under SAP CR CONTENT UP TO 2007, why its version is 4.0? is it because I need to firstly update to 3.0? and where can I find version 3.0?
    I really appreciate your kind help.
    Best regards,
    Nick

Maybe you are looking for

  • Xcode for my Mac 10.6.8

    Hello, I would like to install Xcode on my Mac 10.6.8 but I can not find a compatible version. Can you give me the download links ? Regards, Marion

  • Problems with CC AP not recognising previously downloaded aps

    Hi, I downloaded the CC ap today -  or rather, it downloaded itself and  overwrote the application manager. It does not recognise my previously  downloaded CS6 aps. It initially listed them under "your aps", but once I downloaded lightroom 5, it redu

  • FM: To find condition types of PO

    Hi Is there any function module available which will give me condition types and values of purchase order by passing purchase order no?

  • Missing SSIS related products

    I'm not sure if I'm in the right place, but here goes.  I have SQL Server MGMT Studio 2008 and Visual Studio Professional Edition 2008 installed already. I do not have the installed products of SQL Server Analysis Services, SQL Server Integration Ser

  • Signature with Image

    Hi, I'm using Mail 1.3.11 and trying to add a signature that's a j.peg (inc. text and logo) made in photoshop.....I've tried numerous methods and nothing seems to be working very well...if at all. I've read a lot of the discussion about this so I kno