Integrating RMI with multiple systems

I have a 1 system running on IBM mainframe , one website running on Linux, and one Point-of-Sale System running on Window Server.
How do i integrate these systems using RMI?
Need answers asap!
Thank you!

You design a client/server system; you design the RMI remote interfaces; you write implementations of these interfaces, and RMI client code to make use of them. You deploy.

Similar Messages

  • UWL substitution with multiple systems

    Hi all,
    I need some help in understanding how an UWL substitution works with multiple systems.
    We are using ESS, MSS and SRM workflows and use UWL for all workflow scenarios.
    All users are using ESS, all managers are using ESS, MSS and SRM.
    In the UWL configuration we defined a role base connection to the backend systems. ESS users can only make a UWL connection to R/3 and not to SRM, manager can make a connection to all systems.
    The problem occurs when a manager assign an other user (not a manager) to manage his of her tasks in case of absence. Because the manager also has the rights to make a connection to the SRM system, the UWL tries now to make this connection with this delegated user. Because the user has no rights to make a connection to SRM an error is generated and no tasks at all are displayed in the user’s inbox.
    If we grant the user right to make a connection to the SRM system, also an error is generated because this user has no user account on SRM.
    Is this a normal behaviour, we only want the user to manage all the managers tasks on R/3 and not on SRM because he/she has no authorisation to do so.
    Kind Regards,
    Evert Schuiteman

    I think this will require a separate development as I feel the forwardind table HRUs_D2 stores only user Id and if you need to set som Personnel number as substitution then the devt. should take care whether any user Id is attached to the the PERNR and then set the substitution.
    Thanks
    Arghadip

  • Integrating BIP with multiple LDAP servers

    Hi,
    my question is very simple. In Admin->Security Configuration->Security Model section i've setted Security model combobox with LDAP value. Then i've filled all LDAP information field (for example:URL). All works. But in my rpd i 've multiple LDAP servers (multiple URL) and in the form i can insert information about only one LDAP server.
    Is it possible configure BIP with multiple LDAP servers?
    Thanks
    Giancarlo
    P.S. I'm using OBIEE 10g

    Hi,
    my question is very simple. In Admin->Security Configuration->Security Model section i've setted Security model combobox with LDAP value. Then i've filled all LDAP information field (for example:URL). All works. But in my rpd i 've multiple LDAP servers (multiple URL) and in the form i can insert information about only one LDAP server.
    Is it possible configure BIP with multiple LDAP servers?
    Thanks
    Giancarlo
    P.S. I'm using OBIEE 10g

  • Firefox with multiple system accounts: solutions or alternatives?

    The subject isn't exactly clear but I couldn't think of a good way to summarize the issue.
    I want to share a subset of Firefox bookmarks, extensions, settings and search plugins across different system accounts.
    For example, I have a bookmark hierarchy with directories named foo, bar and baz. I want to keep bar and baz synchronized across multiple accounts but I want foo to remain private for a given account. I want to have extensions x, y and z installed on all accounts with the same settings, but I want extension w only on one account.
    General and plugin settings are easy enough to do with user.js.
    Interface settings, extensions and search plugins can be shared with some scripting and rsyncing but that's a minor pain.
    Sharing a subset of bookmarks is major pain. Either I have to automatically export HTML bookmarks files, write a parser, copy the subset around, import it manually with each account, and finally arrange the imported bookmarks in the hierarchy or I have to open each account in the same X session and copy+paste bookmarks between accounts.
    I could probably write a script to  extract and insert what I want in places.sqlite3, but I don't want to rely on the stability of the database format with the new release plan.
    Does anyone have any suggestions? Firefox Sync is not an option because I do not want to share everything.
    At this point I'm open to alternatives, but there is some functionality that I'm not willing to give up:
    * NoScript (per-site Javascript and Flash blocking)
    * RequestPolicy (per-site permissions for loading content from other sites)
    * Cookie Monster (per-site cookie permissions)
    * Add to Search Bar (easily add any search form to the search bar)
    * Organize Search Engines (create hierarchical structures of aforementioned search engines)
    I've started considering Chrome but the matching extensions don't seem to be mature enough yet (e.g. Request Maker is based on RequestPolicy, but the author admits it lacks features). Besides, I don't really want to rely on the Google apps store if I can avoid it.
    I looked at uzbl too, but the script-blocking scripts apparently fail sometimes because uzbl lacks hooks. An unreliable script-blocker is a no-go for me.
    tl:dr; need suggestions for something that lets me:
    * control outgoing requests from browser
    * control code execution in browser
    * synchronize subsets of bookmarks, extensions, search engines
    * organize bookmarks and search engines
    p.s. Life would be so much easier if Firefox didn't pack shit into SQLite databases like it was playing Tetris.  Just give me some decent command-line options and simple configuration file formats ffs.

    ngoonee wrote: I don't use bookmarks AT ALL.
    oO
    What do you use instead? Memory and auto-completion?
    This did give me an idea... I could just as well write a basic server to host my bookmarks and run that as a daemon.
    As for the suggestions so far:
    * Pentadactyl: I'll look into it, but installing it would be a bit like buying a car just for the seat.
    * Xmarks: that might do what I want, but I don't like the idea of storing all of my bookmarks on  a third-party server and I definitely don't want to let them collect data about me as per their ToS.
    * xxxterm etc.: I'll look into those.
    Thanks!
    I'll post an update as soon as I decide on a solution.
    Last edited by Xyne (2012-05-09 16:08:30)

  • How to install ADS for usage with multiple systems ?

    Good day,
    In our ERP6 System Landscape we have the usual DEV, TST and PRD systems. I have a request to setup ADS with interactive forms to be accessible from each of these systems. Am I right to assume I would need to install a Java Add-In with ADS on each system so each system can have it's own database source for data capture from the interactive forms ? There is no mention in the documentation of using multiple database sources on a single ADS configured system.
    Your suggestions and advice on this matter are greatly appreciated.
    Regards,
    Nelis

    Nelis
    you dont need any JAVA Addin install on your connected Systems (HR, eRec, ECC or whatever)
    You just need the RFC from ABAP (lets say ECC) to your ADS (JAVA)
    you can connect as many Systems as you like. But also check SAP Note #1133230
    We actually have a 2 TIER Landscape Only. ADS-DEV and ADS-PROD. All Development and Quality Systems (HR, eRec, ECC, BW, XI, SolMan) are connected to ADS-DEV. All Production SAP Systems are connected to our ADS-PROD
    http://help.sap.com/saphelp_nw70/helpdata/DE/37/504b8cbc2848a494facfdc09a359b1/content.htm
    Nesimi

  • Integrating Presence with multiple AD/Exchange Domains

    We have a single CUCM cluster that support several organizations.  Some of these organizations want to implement CUPS with integration with their Exchange Servers.  Each organization has their own, seperate AD Tree and Exchange server (some integrate with their own Unity, some others have their own Unity Connection server).  However, Presence only allows a single Outlook Presence Gateway for Free/Busy indication.   This is a problem.
    One thought is that each organization get their own Presence server, but can non-clustered Presence servers integrate with one CUCM cluster?  I know that a single Presence Cluster will not support multiple CUCM clusters, but does it have to be a 1-to-1 relationship?
    Second, can different Presence servers in the same cluster point to different Outlook Presence Gateways?  If so, we can simply add a Presence server for each organization that points to that org's Exchange server.

    The answer is yes and no.
    Yes, you may install multiple CUPS servers with one CUCM cluster.  You may point each CUPS server to different Exchange server.
    Most of the features will work but phone presence ("on-the-phone" status).  Because on CUCM, you can only specify one SIP trunk as PUBLISH trunk.  And one SIP trunk can only point to one CUPS server (cluster).
    There might be some "workarounds".  But I haven't tested them yet.  So it might or might not work.
    Workaround 1:  Set up a "proxy device" to redirect traffic.  All CUPS server point to this device.  This device will redirect the traffic based on difference email domain.  This device could be a layer 7 content switch, an Exchange server, or a firewall/web proxy with content inspection features.
    Workaround 2: On CUPS > Presence > Settings, uncheck "Enable SIP Publish on CUCM".  Without this option, CUPS will use SUBSCRIBE/NOTIFY model to get phone presence from CUCM.  You don't have to specify a PUBLISH trunk on CUCM.  This works on CUCM 5.x.  But I haven't tested on CUCM 6.x or above.
    Ultimate Solution: talk to a Cisco sale person and request multi-tenant feature to be added to CUPS.  You're not the first one who asked for this.  Development team just wait for enough requests to justify the decision.
    Michael
    http://htluo.blogspot.com

  • How does this work with multiple systems backing up with time machine

    I was wondering as Apple states that this will do multiple time machine backups as in multiple computers, how does this do this? I am assumng that it will require me to partition the srive in the unit as multiple partitions. 1 for each time computer with time machine running.

    I'm sorry, I'm not quite sure how to interpret your answer so I'll ask for clarification.
    Do you mean that the backup belonging to each user will be protected by filesystem perms? In other words Alice's backup will be owned by Alice and only readable by her, ditto for the hyperthetical Bill?
    I guess in other words, does Time Machine preserve file ownership perms?

  • Integrating CRM with multiple R/3

    Hi All,
    We have 3 R/3  and 1 CRM systems. All master data same 3 ERP systems. For example Material number :ABC same 3 ERP systems. 3 ERP systems different master data GUID number produced and this GUID number problem extraction to CRM system.
    Can somebody please tell how to integrate the CRM to multiple R/3 systems for both Initial and delta download
    Best regards,

    Hi Okan,
       Define the naming convention that you are going to follow in CRM for the Business Partner.
    Define a External No range for your Busienss partner in CRM w.r.t to your R/3 system
    It is very much possible to assign your No ranges to the Business partner during its intial Load.
    When delta comes you have to mach the same key as it was generated during the intial load.
    Hope this helps
    Regards
    Sourabh

  • Integrated Configuration-with multiple receivers(synchronous )

    Hi All,
    Our scenario is web service to proxy(2 receivers) synchronous scenario.....
    sender is a party and 2 receivers are 2 different business systems....
    we have to create a ICO.....
    when i am creating up to receiver interface is fine...
    in outbound processing tab i didnt find any communication channel.....
    what is the issue????
    any one could you please suggest me the process
    Thanks In Advance,
    vishnu

    Hi All,
    Thanks,
    I got the solution.... like below....
    Use SOAP Adapter both Sender and Receiver.
    Create the Sender SOAP Adapter User Message Protocol: SOAP 1.1 (This is for web Service)
    Create the Receiver SOAP Adapter User Message Protocol : XI3.0  (This is for AAE Adapter)

  • How do I sync with multiple systems with my Iphone 3GS?

       How do I sync with my new IMac with out losing my data that I have already syced with my old PC?

    Launch iTunes on the new Mac.
    From the iTunes menu bar click Store / Authorize This Computer.
    Sync the iPhone.

  • Multiple system maintenance cycles are not shown in pop up for selection

    Hi,
    In change manager, when we create a change document from a change request, we dont get a pop up for selection of maintenance cycles with multiple systems in it.
    The change document is getting created by taking the only available maintenance cycle with only that system.
    Is there any configuration for this?
    Regards,
    Dipti Sawarkar.

    Hi Christian,
    Thanks for your reply.
    I know the pop up will come only when there is more than one maintenance cycles for that production system.
    I have done configuration for Normal correction.( SDMJ) and customized it (ZDMJ).
    When I try to create a CD* from CR* for a particular production system ( CCP) , it just takes up a maintenance cycle for CCP system and doesnt show up any pop for selection of maint cycles whereas I have created 5 maintenance cycles for this system CCP.
    The other 4 maintenance cycles have multiple landscapes (CCP and EAP )in it whereas this one (which gets selected by default) just has CCP landscape in it.
    The strange part is that when I try to create a stand alone CD ( without CR ) , it will give that pop up showing all 5 maint cycles. But this is not happening when I create a CD from a CR.
    I have never done/ seen configuration for the pop up of selecting maint cycles in ChaRM.
    Looking forward to ur help,
    ( *CD - Change Document  and * CR - Change Request)
    Regards,
    Dipti Sawarkar.

  • Integrating MDMP and Unicode systems with IDoc interfaces

    Hi,
    We are working on integrating SAP R/3 6.20 (MDMP) with SAP PI 7.0  SP10 (Unicode) system.  The source will send MATMAS or CLFMAS IDocs with Thai / Japanese characters and PI should transform and post it to SAP ECC 5.0 Target system [IDoc to IDoc scenario].
    ( SAP R/3 Legacy 620 - Non-Unicode / MDMP ) |---->  ( XI  - Unicode) ->  (ECC - Unicode)
    Had a look at few SAP notes (745030 ,656350 and 613389)  and it looks like there is no standard way/best practice to handle this scenario. 
    References:
    1.PDF of TECHED Session ID: IM101 Dealing with Multi-Language Garbage?Data – Lessons Learned
    2.SAP Note 745030 - MDMP - Unicode Interface_Solution Overview.pdf
    3.MDMP_Unicode_Transfer_final.doc from SAP Note 745030
    4.SAP Note 656350 - Master Data Transfer UNICODE to MDMP Systems with ALE.pdf
    5.SAP Note 613389 - ALE SAP system group with Unicode systems (Solution-2)
    My understanding per SAP Notes: (Please correct me if I'm wrong)
    a. For MDMP integraton we can't use Standard ALE Config instead we have to use Custom Configuration (IDoc collection setting in Partner profile &Scheduling  RSEOUT002/RSEOUT00_MDMP and use Function module :IDOC_INBOUND_ASYNCHRONOUS_2 ).
    b. The RFC Destinations should use proper logon langauage for correct MDMP IDoc transfer (For sending IDocs with Japanese character, the logon language should be JP).
    c. If we want to transfer IDocs in more than one language we need to create multiple Partner profiles/RFC destinations each with specific logon language.
    Please guide us in integrating these systems if you have done a similar integrations, following are my questions:
    1] Is there any configuration change required at PI layer?
    2] Do we need to install codepages in PI Unicode system for all languages used or Unicode system is capable of handling all the languages?
    3] Is it necessary to install any SAP Add-on package in R/3 MDMP system inorder to support MDMP to Unicode data transfer?
    3] If we want to send MATMAS/CLFMAS IDoc with Thai/Japanese characters from same system, what are the changes required at the Source system?
        (Source may send MATMAS/CLFMAS IDoc with either Thai/Japanese characters but not both of them in a single IDoc)
    4] Can we use regualr ALE & Partner profile settings for handling multi-byte characters or we need to use IDoc collection and RSEOUT002/RSEOUT00_MDMP report for transfer?
    5] Is there any restrictions on the IDoc types (MATMAS,CLFMAS etc) supported in MDMP-Unicode integration solution.
    5] Is there any best practice document available for this scenario?
    6] Do we need to involve SAP AG for MDMP to Unicode system integrations(As per SAP Note: 656350) ?
    Thanks and Regards,
    Ananth

    Hi Ananth,
    as you have already mentioned, you need differents RFC destinations for each language. So you have to make sure, that the IDocs use the right destination according to there content.
    If you have messages from PI to MDMP it is the same, you need different channels with different logon languages as well. You need an identifier in the message, that can be used for selecting the correct channel.
    It should not be a restricting to any IDoc type, but it is not possible to post a message with different languages (which require different codepages) in one IDoc.
    For correct conversion from a non unicode system to unicode, the codepages have to be installed in th OS of the PI server.
    Regards
    Stefan

  • One SRM integrated with multiple Backends

    Hi All
    Can One SRM be integrated with multiple Backends?
    If so any insights, documentation, pros-cons that can you all can share?
    Does the version of SRM or ECC matter?
    SRM version will be 7.0 and ECC 6 EP3.
    Thanks,
    Gamad

    Hi Gamad,
    multiple backend systems for one SRM is normal and works fine.
    You just need to connect the systems, replicate the materials/vendors you would like to use and maintain the SRM customizing:
    1) Add the further backend system(s):
    -> Supplier Relationship Management -> SRM Server -> Technical Basic Settings -> Define Backend Systems
    2) Define the scenario/follow-on document creation for the product categories
    -> Supplier Relationship Management -> SRM Server -> Technical Basic Settings  -> Define Backend System for Product Category
    3) Define the scenario/follow-on document creation for the product categories
    -> Supplier Relationship Management -> SRM Server -> Cross-Application Basic Settings -> Define Objects in Backend System (Purch. Reqs, Reservations, Purch. Orders)
    Regards,
    Peter

  • Help needed in running the RMI application with multiple clients

    Hi
    I have my RMI application with one server and 6 clients. I keep all the server and client programs in the same directory. When i run the clients, the first 2 clients work properly but when the third or the fourth client starts, it works normally in getting the data and after a while it crashes. If teh third crashes the 4th works and if the 4th crashes the 3rd, 4th and 5th works ...randomly atleast one or 2 clients crash always.
    following is the error message generated for a client named controller:
    [ code ]
    Exception in thread "main" java.lang.NullPointerException
    at PostOfficeImpl.isinputAvail(PostOfficeImpl.Java:315)
    at PostOfficeImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
    at sun,rmi.transport.Transport$1.run(Transport.java:153)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun,rmi.transport.Transport.serviceCall(Transport.java:149)
    at sun,rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun,rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at java.lang.Thread.run(Thread.java:595)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
    at PostOfficeImpl_Stub.isinputAvail(Unknown Source)
    at CONTROLLER.main(CONTROLLER.java:167)
    my ser ver program is as follows:
    class PostOfficeServer extends java.rmi.server.UnicastRemoteObject implements java.rmi.Remote {
    // Instance of ourselves
    public static String name;
    private static PostOfficeServer rmi;
    // public No-argument constructor
    public PostOfficeServer() throws RemoteException {
         super();
    public static void main(String[] args){
    if(System.getSecurityManager() == null) {
         System.setSecurityManager(new RMISecurityManager());
    try {
         new PostOfficeServer();
         PostOffice postOfficeserver = new PostOfficeImpl();
    try {
         getIP ipAdd1 = new getIP();
         String ip1 = ipAdd1.getIP();
         name = "//" + ip1 + "/PostOffice";
    catch (Exception e){
         System.out.println();
    Naming.rebind(name, postOfficeserver);
    System.out.println("RemoteServer bound");
    System.out.println("initialise Data Structure");
    postOfficeserver.initDatastructure();
    System.out.println("initilised");
    catch (java.rmi.RemoteException e) {
         System.out.println("Cannot create remote server object");
    catch (java.net.MalformedURLException e) {
         System.out.println("Cannot look up server object");
    System.out.println("Server started.");
    System.out.println("Enter <CR> to end.");
    try {
         int serve2end = System.in.read();
    }catch (IOException ioException) {
    System.exit(0);
    //endoffilePlease advise as this is very urgent

    Hi
    the following is the code for PostOfficeImpl...its a long code but i include it so that I get your help please...
    import java.io.*;
    import java.net.*;
    import java.lang.*;
    import java.rmi.*;
    import java.rmi.server.*;
    import java.rmi.RemoteException;
    import java.util.HashMap;
    import java.util.*;
    public class PostOfficeImpl extends java.rmi.server.UnicastRemoteObject implements PostOffice {
    //Implementations must have an explicit constructor in order to declare the
    //RemoteException exception
    public PostOfficeImpl() throws java.rmi.RemoteException {
         super();
    public static LinkedListImpl list = new LinkedListImpl();
    public static oListImpl ovarList  = new oListImpl();
    public static iListImpl ivarList =new iListImpl();
    public static lipsList llfirst;
    public static oList opchannel, ofirst, onext;
    public static iList ipchannel, ichan, ifirst;
    public static  String[] variNumber= new String[100];
    public static String[] inoutChan, inChan, outChan,inVAR, invarLIST,outVAR, outvarLIST ;
    public static String[][] driveMat;
    DriverMatrix_mthds drive = new DriverMatrix_mthds();
    private static  Boolean All_Vacant;
    private static  Boolean tAll_Vacant;
    public void sendAll_Vacant(Boolean All_Vacant) throws RemoteException {
         tAll_Vacant = All_Vacant;
    public Boolean getAll_Vacant() throws RemoteException{
          return tAll_Vacant;
    public  void initDatastructure() throws RemoteException{
    ifirst = null;
    ofirst=null;
    int i=0, j=0, k=0, ind1=0, ind2=0;
    try{/// initialise list
         drive = new DriverMatrix_mthds();
         drive.VarTypeArray();
         drive.nodeHeadVarType();
         String[] variablel = drive.Variablelist();
         drive.lipsvariablist();
         drive.NodeOrigin();
    drive.nodeInput();
         drive.numOfnodes();
         drive.noOfVariables();
         drive.Assignlist();
         drive.novarType();
         drive.varNameType();
         drive.nodeNumName();
         drive.driverMat();
         String[][] lookupvar = drive.varNameType();
         //tempdrive = drive.driverMat();
         long leng1 = variablel.length;
         int varlistlength = (int) leng1;
         int counter;
         String s1="";
         String s2="";
         String s3 = "";
         String s4 = "";
         String s6 = "";
         int s5=0, c=0;
         while(variablel[k] !=null){
              k=k+1;
         int i1, j1;
         String  varname, varnumber;
         varnumber = "";
    while(i<=variablel.length-1){
         if(variablel!=null){
         c=c+1;
         i=i+1;
    try{
         ind1=0; ind2 = 0;i=0;
    while(!(variablel[i].equals("end of file"))){
         s1 = variablel[i];
         i=i+1;
         s2 = variablel[i];
         i=i+1;
         System.out.println("     " + s1+"     "+s2);
    while(!(variablel[i].equals("end of input variable"))){
         s4 = variablel[i];
         i1=0;
         Brkwhile:while(i1<=lookupvar.length-1){
         j1=1;
         if(lookupvar[i1][j1] != null){
         if(lookupvar[i1][j1].equals(s4)){
              s3 = lookupvar[i1][0];
              break Brkwhile;
         i1=i1+1;
    //ifirst.varNum = varnumber;
    s5 = 0;
    s6 = null;
    ifirst= new iList(s3,s4, s5, s6);
    ivarList.add(ifirst);
    System.out.println(s3+"     "+s4+"     "+s5+"     "+s6);
    i=i+1;
    i = i + 1;
    System.out.println("input list finished ");
    while(!(variablel[i].equals("end of output variable"))){
         s4 = variablel[i];
         i1=0;
         j1=1;
         Brkwhile:while(lookupvar[i1][j1] != null){
              if(lookupvar[i1][j1].equals(s4)){
              s3 = lookupvar[i1][0];
              break Brkwhile;
         i1=i1+1;
         s5 = 0;
         s6 = null;
         ofirst= new oList(s3,s4, s5, s6);
         ovarList.add(ofirst);
         System.out.println(s3+"     "+s4+"     "+s5+"     "+s6);
         i=i+1;
         llfirst = new lipsList(s1, s2, ivarList, ovarList);
         list.add(llfirst);
         System.out.println("output list finished ");
         i=i+1;
         catch (NullPointerException ne){
         catch (Exception d){}
    public int isitOK(reqPacket sndNodetail)
         throws RemoteException{
         String nodnum = sndNodetail.srcNum;
         String varnum = sndNodetail.varNum;
         int status = 0;
         llfirst = list.getFirst();
         try{mainbegin:while (llfirst != null){
              if((llfirst.nodeNum).equals(nodnum)){
              ofirst = ovarList.getFirst();
              while(ofirst != null){
                   if((ofirst.varNum).equals(varnum)){
                   if(ofirst.varVal==null){
                   status = 1;
                   break mainbegin;
         ofirst = ofirst.next;
         llfirst = llfirst.next;
         catch (NullPointerException nl){}
         return status;
    public int senData(dataPacket sendToRTS)
         throws RemoteException{
    dataPacket datDetail = sendToRTS;
    String nnum, vnum,typename, dval;
    String dtype = "";
    nnum = datDetail.nodeNum;
    vnum = datDetail.varNum;
    typename = datDetail.dataType;
    dval = String.valueOf(datDetail.dataVal);
    String [][] tempdrive, varnametype;
    int status =0;
    System.out.println("data received is from node " nnum " is "+ dval+"var num " +vnum);
    status =0;
    try{
    //DriverMatrix_mthds drive = new DriverMatrix_mthds();
    drive.VarTypeArray();
    drive.Variablelist();
    drive.NodeOrigin();
    drive.nodeInput();
    drive.numOfnodes();
    drive.noOfVariables();
    String[][] lookupvar = drive.novarType();
    drive.varNameType();
    drive.nodeNumName();
    drive.driverMat();
    tempdrive = drive.driverMat();
    String varname="";
    int i,j;
    //with the recived var name get the var num
    for(i=0; i<=lookupvar.length-1; i++){
         j=0;
         if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(typename)){
                   dtype = lookupvar[i][1];
         }//varname is moved to dtype n used for checking
         for(i=0; i<=tempdrive.length-1; i++){j=0;
         if (tempdrive[i][j] != null){
         if (tempdrive[i][0].equals(vnum)){
              if (tempdrive[i][1].equals(nnum)){
              if(tempdrive[i][2].equals(dtype)){
              status = 1;
         }//System.out.println("received data " vnum " "+ nnum +" " + dtype +" "+dval);// after checking status if the status is 1 then set the counter n olist// to no of times the value has to be ditributed
    int Ccount =0;
    //opchannel = llfirst.olist;
    try{
         System.out.println("status"+status);
         if (status == 1){
              llfirst = list.getFirst();
         mainWhile: while (llfirst != null){
              if((llfirst.nodeNum).equals(nnum)){
                   ofirst = ovarList.getFirst();
                   while(ofirst != null){
                   if((ofirst.varNum).equals(vnum)){
                        ofirst.varVal =dval;
                        //setting the counter for the varname
                        //check driver matrix fr the no of occurances
                   for(i=0; i<=tempdrive.length-1; i++){
                   j=0;
                   if (tempdrive[i][j] != null){
                        if (tempdrive[i][0].equals(vnum)){
                        for(j= j+3;j<=tempdrive.length-1;j++){
                        if(tempdrive[i][j] != null){
                        if(tempdrive[i][j].equals("1")){
                        Ccount = Ccount + 1;
    System.out.println("count"+Ccount);
    ofirst.counter = Ccount;
    ofirst.varNum = vnum;for(i=0; i<=lookupvar.length-1; i++){
    for(j=0; j<=2; j++){
         if(lookupvar[i][j] != null){
         if(lookupvar[i][j].equals(vnum)){
              varname = lookupvar[i][1];
         ofirst.varName = varname;
         Ccount=0;
         break mainWhile;
         ofirst = ofirst.next;
         llfirst = llfirst.next;
         catch(NullPointerException s){}
    /*use the vnum in the driver matrix and find out the nodes to which this variable
    *has been sent as input , i mean destination nodes..
    *find the node numbers ..knowing the node numbers parse through data structure
    and set the input values to value and status 1./
    llfirst = list.getFirst();
    while(llfirst != null){
         ifirst = llfirst.ilist.getFirst();
         while(ifirst != null){
              if (ifirst.varNum.equals(vnum)){
              ifirst.varStat = 1;
              ifirst.varVal = dval;
              //     System.out.println("nodenum "+llfirst.nodeNum+" varval     " + ifirst.varVal +"     stat "+ifirst.varStat+" vnum " + ifirst.varNum);
         ifirst=ifirst.next;
         llfirst=llfirst.next;
         catch (Exception e){};
         return status;
    public int isinputAvail(reqPacket inputReq)
         throws RemoteException{
         String srcnum = inputReq.srcNum;
         String varnum = inputReq.varNum;
         int availstatus =0;
         llfirst = list.getFirst();
         //System.out.println("llfirst.nodeNum     "+ llfirst.nodeNum);
         whileloop:while (llfirst != null){
              if((llfirst.nodeNum).equals(srcnum)){
              ifirst = llfirst.ilist.getFirst();
              breakloop: while(ifirst != null){
              //System.out.println("var num " + varnum + "     " + "status outside" + ifirst.varStat);
              if((ifirst.varNum).equals(varnum)){
              if (ifirst.varStat == 1){
                   availstatus = 1;
                   ifirst.varStat = 0;
                   // System.out.println("var num " + varnum + "     " + "status" + availstatus);
                   break whileloop;
         ifirst = ifirst.next;
         llfirst = llfirst.next;
         //System.out.println("var num " + varnum + "     " + "status" + availstatus);
         return availstatus;
    public dataPacket senDatatoNode(reqPacket sendFromRTS)
         throws RemoteException {
         String nnum, vnum, dtype, dval;
         //nnum = "";
         dtype="";
         //opchannel = llfirst.olist;
         //     ipchannel = llfirst.ilist;
         reqPacket sendfromrts = sendFromRTS;
         nnum = sendfromrts.srcNum;
         vnum = sendfromrts.varNum;
         //     dtype = sendFromRTS.dataType;
         dval = "";
         int ctrchk=0;
         try{
         //send data to process node n reduce the counter by 1
         llfirst = list.getFirst();
              mainWhile: while (llfirst != null){
              if((llfirst.nodeNum).equals(nnum)){
              ofirst = llfirst.olist.getFirst();
         whileofirst: while(ofirst != null){
              if((ofirst.varNum).equals(vnum)){
              dval = ofirst.varVal;
              ofirst.counter = ofirst.counter - 1;
              //     System.out.println(ofirst.counter);
              ctrchk=ofirst.counter;
              break whileofirst;
         ofirst = ofirst.next;
    //set the status of respective input channel to 0 as data has been sent
         ifirst = llfirst.ilist.getFirst();
         if(ctrchk == 0){
         whileifirst: while(ifirst != null){
              if((ifirst.varNum).equals(vnum)){
              //ifirst.varVal = dval;
              ifirst.varStat =0;
              break whileifirst;
         llfirst = llfirst.next;
         //System.out.println(llfirst);
         catch(NullPointerException s){}
    //find type
    try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType()     ;
         String[][] lookupvar = driver.varNameType();
         int i, j;
         String varNum = vnum;
         for(i=0; i<=lookupvar.length-1; i++){
              j=0;
              if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(vnum)){
              dtype = lookupvar[i][2];
         catch (Exception d){}
         dataPacket retpac = new dataPacket(nnum, vnum, dtype, dval);
         System.out.println("msg sent "+ nnum +"     " + vnum+" "+ dtype+"     "+ dval);
         return retpac;
    public String findnodeName(String nodeNum)
         throws RemoteException{
    String nnum = nodeNum;
    llfirst = list.getFirst();
    while (llfirst != null){
         if((llfirst.nodeNum).equals(nnum)){
         return llfirst.nodeName;
         llfirst = llfirst.next;
         System.out.println("node Number does not match with the list of node numbers generated..try again");
         return null;
    //find the nodenum given the node name
    public String findnodenum(String nodename)
         throws RemoteException{
         String nodenumber ="";
         String nodname = nodename;
         try{DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType()     ;
         driver.varNameType();
         String[][] lookupnode = driver.nodeNumName();
         int i, j;
         for(i=0; i<=lookupnode.length-1; i++){
         for(j=0; j<=2; j++){
              if(lookupnode[i][j] != null){
              if(lookupnode[i][j].equals(nodname)){
                   nodenumber = lookupnode[i][2];
         catch (Exception d){}
         return nodenumber;
    public String findvarnum(String variablename)
         throws RemoteException{
         String varnumber = "";
         try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType()     ;
         String[][] lookupvar = driver.varNameType();
         int i, j;
         String varname = variablename;
         for(i=0; i<=lookupvar.length-1; i++){
         for(j=0; j<=2; j++){
              if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(varname)){
                   varnumber = lookupvar[i][0];
    catch (Exception d){}
    return varnumber;
    public String findvartype(String varname)
         throws RemoteException{
         String vartype = "";
         try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType();
         String[][] lookupvar = driver.varNameType();
         int i, j;
         String varName = varname;
         for(i=0; i<=lookupvar.length-1; i++){
         for(j=0; j<=2; j++){
              if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(varName)){
                   vartype = lookupvar[i][2];
    catch (Exception d){}
    return vartype;
    public String findtypenum(String vartype){
    String varnum = "";int i;
    try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         String varNum[][] =      driver.novarType()     ;
         String varType = vartype;
         for(i=0; i<=9-1; i++){
              if(varNum[i][0] != null){
              if(varNum[i][0].equals(varType)){
                   varnum = varNum[i][1];
    catch (Exception d){}
    return vartype;
    //return input variable list
    public String[] inoutchanlist(String nodenum, String nodenam)
         throws RemoteException{
    try{
         DriverMatrix_mthds drive = new DriverMatrix_mthds();
         String[] varLIST = drive.Variablelist();
         int i=0;int j;
         while(varLIST[i]!=null){
              i=i+1;
         int arrlength = i;
         inoutChan = new String[arrlength];
         i=0; j=0;
         WHILELOOP:
         while(!(varLIST[i].equals("end of file"))){
         while(varLIST[i].equals(nodenum)){
              i=i+1;
              while(varLIST[i].equals(nodenam)){
                   i=i+1;
                   while(!(varLIST[i].equals("end of input variable"))){
                        inoutChan[j] = varLIST[i];
                        i=i+1;
                        j=j+1;
              System.out.println("endofinput");
              inoutChan[j]="endofinchan";
              j=j+1;
              i=i+1;
              while(!(varLIST[i].equals("end of output variable"))){
         inoutChan[j] = varLIST[i];
         i=i+1;
         j=j+1;
         System.out.println("endofoutput");
         inoutChan[j]="endofoutchan";
         break WHILELOOP;
         i=i+1;
         arrlength =j;
         for(j=0; j<=arrlength-1; j++){
         System.out.println(inoutChan[j]);
         catch (Exception e){}
         return inoutChan;
    public String[] inchannel(String[] inoutChan) throws RemoteException{
    int count=0;int i=0, j=0;
    System.out.println("entered");
    while(inoutChan[count]!=null){
         System.out.println(count + " " +inoutChan[count]);
         count=count+1;
         inChan = new String[count];
         while(!(inoutChan[i].equals("endofinchan"))){
         inChan[j] =inoutChan[i];
         j=j+1; i=i+1;
    return inChan;
    public String[] outchannel(String[] inoutChan) throws RemoteException{
    int count=0;int i=0, j=0;
    System.out.println("entered");
    while(inoutChan[count]!=null){
         System.out.println(count + " " +inoutChan[count]);
         count=count+1;
         outChan = new String[count+1];
         while(!(inoutChan[i].equals("endofinchan"))){
              i=i+1;
         i=i+1;
         while(!(inoutChan[i].equals("endofoutchan"))){
              outChan[j] =inoutChan[i];
              j=j+1; i=i+1;
         return outChan;
    public String[] invarChan(String nodename, int guardno)throws RemoteException{
    try{
    DriverMatrix_mthds drive = new DriverMatrix_mthds();
    invarLIST = drive.invarlist();
    int i=0;int j;
    while(invarLIST[i]!=null){
         i=i+1;
         int arrlength = i;
         inVAR = new String[arrlength];
         i=0; j=0;
              WHILELOOP: while(!(invarLIST[i].equals("end of file"))){
                   if (invarLIST[i].equals(nodename)){
         i=i+1;
         while(!(invarLIST[i].equals(nodename+String.valueOf(guardno)))){
         i=i+1;}
         i=i+1;
         while(!(invarLIST[i].equals("endofguard"))){
         System.out.println(invarLIST[i]);inVAR[j]=invarLIST[i]; i=i+1; j=j+1;}
         break WHILELOOP;}
         i=i+1;}
    }catch (Exception d){}
    return inVAR;
    public String[] outvarChan(String nodename, int guardcount)throws RemoteException{
         try{
         DriverMatrix_mthds drive = new DriverMatrix_mthds();
         outvarLIST = drive.outvarlist();
         int i=0;int j;
         while(outvarLIST[i]!=null){
              i=i+1;
         int arrlength = i;
         outVAR = new String[arrlength];
         i=0; j=0;
         WHILELOOP: while(!(outvarLIST[i].equals("end of file"))){
              if (outvarLIST[i].equals(nodename)){
                   i=i+1;
                   while(!(outvarLIST[i].equals(nodename+String.valueOf(guardcount)+"guard"))){
                        i=i+1;}
              i=i+1;
              while(!(outvarLIST[i].equals("end guard"))){
              System.out.println(outvarLIST[i]);outVAR[j]=outvarLIST[i]; i=i+1; j=j+1;}
              break WHILELOOP;}
         i=i+1;}
    }catch (Exception d){}
    return outVAR;
    private static Boolean start;
    private static Boolean tstart;
    public void sendstart(Boolean start) throws RemoteException {
         tstart = start;
    public Boolean getstart() throws RemoteException{
         return tstart;
    private static Boolean done;
    private static Boolean tdone;
    public void senddone(Boolean done) throws RemoteException {
         tdone = done;
    public Boolean getdone() throws RemoteException{
         return tdone;
    private static Boolean vac_busy1;
    private static Boolean tvac_busy1;
    public void sendvac_busy1(Boolean vac_busy1) throws RemoteException {
         tvac_busy1 = vac_busy1;
    public Boolean getvac_busy1() throws RemoteException{
         return tvac_busy1;
    private static int cus1_rit1;
    private static int tcus1_rit1;
    public void sendcus1_rit1(int cus1_rit1) throws RemoteException {
         tcus1_rit1 = cus1_rit1;
    public int getcus1_rit1() throws RemoteException{
         return tcus1_rit1;
    private static int cus1_rit2;
    private static int tcus1_rit2;
    public void sendcus1_rit2(int cus1_rit2) throws RemoteException {
         tcus1_rit2 = cus1_rit2;
    public int getcus1_rit2() throws RemoteException{
         return tcus1_rit2;
    private static int cus1_rit3;
    private static int tcus1_rit3;
    public void sendcus1_rit3(int cus1_rit3) throws RemoteException {
         tcus1_rit3 = cus1_rit3;
    public int getcus1_rit3() throws RemoteException{
         return tcus1_rit3;
    private static int cus1_it1;
    private static int tcus1_it1;
    public void sendcus1_it1(int cus1_it1) throws RemoteException {
         tcus1_it1 = cus1_it1;
    public int getcus1_it1() throws RemoteException{
         return tcus1_it1;
    private static int cus1_it2;
    private static int tcus1_it2;
    public void sendcus1_it2(int cus1_it2) throws RemoteException {
         tcus1_it2 = cus1_it2;
    public int getcus1_it2() throws RemoteException{
         return tcus1_it2;
    private static int cus1_it3;
    private static int tcus1_it3;
    public void sendcus1_it3(int cus1_it3) throws RemoteException {
         tcus1_it3 = cus1_it3;
    public int getcus1_it3() throws RemoteException{
         return tcus1_it3;
    private static int stkit_11;
    private static int tstkit_11;
    public void sendstkit_11(int stkit_11) throws RemoteException {
         tstkit_11 = stkit_11;
    public int getstkit_11() throws RemoteException{
         return tstkit_11;
    private static int stkit_12;
    private static int tstkit_12;
    public void sendstkit_12(int stkit_12) throws RemoteException {
         tstkit_12 = stkit_12;
    public int getstkit_12() throws RemoteException{
         return tstkit_12;
    private static int stkit_13;
    private static int tstkit_13;
    public void sendstkit_13(int stkit_13) throws RemoteException {
         tstkit_13 = stkit_13;
    public int getstkit_13() throws RemoteException{
         return tstkit_13;
    private static int c1_it1;
    private static int tc1_it1;
    public void sendc1_it1(int c1_it1) throws RemoteException {
         tc1_it1 = c1_it1;
    public int getc1_it1() throws RemoteException{
         return tc1_it1;
    private static int c1_it2;
    private static int tc1_it2;
    public void sendc1_it2(int c1_it2) throws RemoteException {
         tc1_it2 = c1_it2;
    public int getc1_it2() throws RemoteException{
         return tc1_it2;
    private static int c1_it3;
    private static int tc1_it3;
    public void sendc1_it3(int c1_it3) throws RemoteException {
         tc1_it3 = c1_it3;
    public int getc1_it3() throws RemoteException{
         return tc1_it3;
    //endoffile

  • Automated deployments of Windows 7 on systems with multiple hard drives

    Last week I helped a customer use MDT2010 to deploy Windows 7 to ThinkStation systems with multiple hard drives.  The customer has multiple HDDs in the system and wants Windows to be installed to the HDD that is connected to SATA port 1.  Unfortunately Windows does not always assign "Disk 0" to the HDD on SATA port 1 - in fact it is completely random what disk ID gets assigned to which SATA port.  The bug is documented by Microsoft in KB937251:
    http://support.microsoft.com/kb/937251
    MDT2010 uses hard-coded disk IDs (0, 1, 2, etc) to specify where Windows gets installed.  And because of the bug, sometimes Windows gets installed to the HDD on SATA port 1 and sometimes it gets installed to a different HDD.
    The solution is to install Windows to the HDD identified by the "SELECT DISK SYSTEM" command of DISKPART.  This will always return the disk that is connected to the lowest SATA port.
    To configure this in MDT2010, use the following steps (refer to the attachment):
    1. copy "FormatPartition.txt" and "SystemDisk.vbs" to your Scripts folder in the Deployment Share. 
    2. in your Task Sequence, disable the existing step called "Format and Partition Disk" (see TaskSequence.jpg)
    3. create a new step at the same location called "Format and Partition Disk (custom)". The type is "General -> Run Command Line". The command line is " cmd.exe /c "diskpart /s %SCRIPTROOT%\FormatPartition.txt" "
    4. on the main screen for Deployment Workbench, right-click on the Deployment Share and select "properties", then click on the "rules" tab
    5. under section [Default], add the following entries (see Rules.jpg)
        - UserExit=SystemDisk.vbs
        - DestinationDisk=#DiskID#
        - DestinationPartition=1
    Hopefully this info will help someone else!
    Attachments:
    MDT2010.zip ‏261 KB

    Last week I helped a customer use MDT2010 to deploy Windows 7 to ThinkStation systems with multiple hard drives.  The customer has multiple HDDs in the system and wants Windows to be installed to the HDD that is connected to SATA port 1.  Unfortunately Windows does not always assign "Disk 0" to the HDD on SATA port 1 - in fact it is completely random what disk ID gets assigned to which SATA port.  The bug is documented by Microsoft in KB937251:
    http://support.microsoft.com/kb/937251
    MDT2010 uses hard-coded disk IDs (0, 1, 2, etc) to specify where Windows gets installed.  And because of the bug, sometimes Windows gets installed to the HDD on SATA port 1 and sometimes it gets installed to a different HDD.
    The solution is to install Windows to the HDD identified by the "SELECT DISK SYSTEM" command of DISKPART.  This will always return the disk that is connected to the lowest SATA port.
    To configure this in MDT2010, use the following steps (refer to the attachment):
    1. copy "FormatPartition.txt" and "SystemDisk.vbs" to your Scripts folder in the Deployment Share. 
    2. in your Task Sequence, disable the existing step called "Format and Partition Disk" (see TaskSequence.jpg)
    3. create a new step at the same location called "Format and Partition Disk (custom)". The type is "General -> Run Command Line". The command line is " cmd.exe /c "diskpart /s %SCRIPTROOT%\FormatPartition.txt" "
    4. on the main screen for Deployment Workbench, right-click on the Deployment Share and select "properties", then click on the "rules" tab
    5. under section [Default], add the following entries (see Rules.jpg)
        - UserExit=SystemDisk.vbs
        - DestinationDisk=#DiskID#
        - DestinationPartition=1
    Hopefully this info will help someone else!
    Attachments:
    MDT2010.zip ‏261 KB

Maybe you are looking for