RMI Concept

Hi Everybody,
I have a general question.
First try to visualize a scenariio, 3-tier application. Where there is a server and unknown number of clients. Suppose all the clients need to call a method from a object that connects to data source (any Database) In such case how do i design the RMI object, as the dillema is-
same object might be called by different clients and same method might be called as well in that case will there be any problem. If so a working advise will be very helpful.
I gave it a lot of thought and came up with a idea that, for each client the RMI object may intiate a Thread; but the implementation is not worked with yet. It would be great if anybody helped.
Thanks everybody.
Imram

Imram,
I am not sure I completely understand your question, but as I understand it here goes:
If you have a middle-ware object between the clients and the database, which has a method that can be called by multiple clients; RMI will take care of the thread creation automatically for you. Simultaneous client calls will execute concurrently. Your concern needs to be to synchronize any critical sections of the object's functionality.
I hope I understood your question correctly, and I hope that helps.
John
PS I would also recommend the following site as a resource: https://cajo.dev.java.net

Similar Messages

  • Java.rmi.ServerException:

    I am new to RMI concept
    i stuck with the below problem
    when i execute
    E:\MyProjects\StockRMI>java -Djava.security.policy=policy.all StockMarketServerStockMarketServer is as shown below
    import java.rmi.*;
    import java.rmi.server.UnicastRemoteObject;
    import SimpleStocks.*;
    public class StockMarketServer {
      public static void main(String[] args) throws Exception {
        if(System.getSecurityManager() == null) {
          System.setSecurityManager( new RMISecurityManager() );
        StockMarketImpl myObject = new StockMarketImpl( "NASDAQ" );
        System.out.println( "RMI StockMarketServer ready..." );
    } i got the following error
    java.rmi.ServerException: RemoteException occurred in server thread; nested exce
    ption is:
            java.rmi.UnmarshalException: error unmarshalling arguments; nested excep
    tion is:
            java.lang.ClassNotFoundException: SimpleStocks.StockMarketImpl_Stub
    RMI StockMarketServer ready...Interface class, Interface implementation class and stub all reside in MyProjects\StockRMI\SimpleStocks directory
    where as Server class(StockMarkerServer) is in MyProjects\StockRMI
    even i place the stub in MyProjects\StockRMI directory i got the same error.
    Can any one please save me out of this problem

    hurry!
    Thank u First of all
    I got it.. finally after 2 days
    The error is in CLASSPATH only , i set it
    Thanks once again

  • Is RMI (provided in the java package ) stable??

    I'm starting to write an application that use the RMI concept. Because the guy at SUN's training center said that RMI is not very stable, he suggested to use CORBA.
    About 1000 java application could use the RMI at the same time.
    thanks

    Most of the EJB application servers are using an RMI protocol to do the bean lookups and communication. I would have to think RMI is quite stable.

  • How to RMI Classes and sigar interface

    HI all,
    Actually i want check CPU usage and i am using sigar api for this..
    i made a class using sigar api and now i want to use that class in RMI but i don't know to use that class in RMI concept.
    i just want to use that class which shows CPU usage in RMI classes which i will make..
    thanks

    HI all,
    Actually i want check CPU usage and i am using sigar api for this..
    i made a class using sigar api and now i want to use that class in RMI but i don't know to use that class in RMI concept.
    i just want to use that class which shows CPU usage in RMI classes which i will make..
    thanks

  • RMI beginner

    Hi all,
    I want to learn RMI.
    Can u suggest me how to learn RMI concept.

    This link seems a good beginning :
    http://java.sun.com/j2se/1.4.2/docs/guide/rmi/getstart.doc.html

  • Remote system state

    i want to know whether the remote system state on or off. any body help me to find remote system on or off state using java.net package. no need to use RMI concepts.

    udhaya_Sri wrote:
    i want to know whether the remote system state on or off. any body help me to find remote system on or off state using java.net package. no need to use RMI concepts.I doubt it (not a foolproof one anyway), and it would be likely to be system-dependent (and if I was the administrator, I'd probably turn it off).
    ping usually works, but again, some systems may have it turned off. Some systems (like Unix) also provide an 'isalive' command, but it's probably based around ping.
    Winston

  • Client & stub

    hi...friends
    i'm a new learner to rmi concepts. can anybody help me in knowing the client & stub concepts in rmi.

    stub is a client side proxy for a remote object ( instance of a class that implements a remote interface ) which is responsible for communicating method invocations on remote objects to the server where the actual remote object implementation resides and are generated with the command -rmic class_name. Client gets reference to the remote object with the help of stub.
    More information can be obtained from either Java Tutorial or the Java Documentation.

  • Why stub and skeleton ?

    Hi,
    I am new RMI concepts...
    i am not able to understand why we need stub and skeleton...
    we can can put all the stub codes/operations in our client program itself...
    similarly for skeleton...
    then why we are having a seperate things like stub and skeletons??
    thanks

    heloo firend,
    stub is gonna be in the client side and skeleton i s gonna be in the server side...
    stub is a proxy 4 the remotemethod in the server....

  • Binding by the server

    hi,
    i have a question......while i read RMI i saw that server code binds the object . and client looks up the object......but in EJB there is no binding ! ...client looks up. why it is different ? after all EJB usues RMI...does the container takes care of binding the beans in the background ? or i am lacking something ?

    It depends on what you mean by automatically. The
    binding is defined in the deployment descriptor
    written by the developer. The container reads the
    descriptor and binds the EJB.
    /Kaji guess you mean alternative of the hardcoded bind() method is here.......
    <ejb-name>SignOnEJB</ejb-name>
          <home>day05.SignOnHome</home>
          <remote>day05.SignOn</remote>
          <ejb-class>day05.SignOnEJB</ejb-class>you mean these tags are responsible for the alternative of the bind() method. ?
    actually i became dissatisfied bcoz of the absense of so called bind() method in RMI.....as EJB usues RMI concept so i thought bind() should have been there .......
    well , OK
    thanks for the time.

  • I need to run rmiregistry automatically.. any one help me...

    hi
    I am new to RMI, i created a simple RMI concept and it is working fine. I need to start rmiregistry by manually. Is there way to run rmiregistry as automatic when i execute the server program..
    please clear me..

    To start the rmiregistry programmatically:
    LocateRegistry.createRegistry(1099);To stop it programmatically:
    UnicastRemoteObject.unexportObject(registry, true);However, you can also do it "dirty" (I tried this successfully):
    Runtime.getRuntime().exec(rmiRegistry);
    // rmiRegistry is e.g. ".../rmireghistry.exe"The benefit of the last method is that "rmiregistry" is its own process which you can monitor (e.g. TaskManager in Windows) and kill seperatly if necessary during debugging.

  • Question about the concept of RMI reverse calls.

    Hello guys.
    I'd appreciate if someone could clarify something to me. As far as I understand , RMI reverse call in concept, is the mean thought witch a server can remotely call a method belonging to the client.
    I've done that like this: the client called a method from to the server(classic rmi) , method that had the particularity to received as a parameter an instance of a serialized .class belonging to client. Through that received remote object it seems the server can call specific methods belonging to the client .class.
    I'm not sure it's the correct way to do reverse calls, but what puzzles me is that shouldn't the server be able to call a client method without first needing to receive that instance of the client's .class and implicitly being dependent on that client initial call (maybe to get that .class in a different way)?

    I'm not sure it's the correct way to do reverse callsIt's not. If the object passed to the server is serializable, the server can call methods on it, but they will execute at the server.
    The object you pass to the server must be an exported remote object. Then the server callbacks will execute at the client.
    but what puzzles me is that shouldn't the server be able to call a client method without first needing to receive that instance of the client's .classNo, why?
    and implicitly being dependent on that client initial call (maybe to get that .class in a different way)?When you get the exported remote object part right, the remote method via which the client passes the callback to the server will declare the callback as a remote interface, not as the implementing class at the client.

  • RMI How can a Client reconnect to a server after connection(any)-error

    I have the following problem:
    My RMI-Server runs for ever. In a batch-queue I have a procedure which looks periodly wether rmiregistry
    and RMI-Server exists. On error both processes are killed and restarted.
    My client as a simple example is displaying the server time. If any communication-problem with the
    server exists, I need an automatic reconnect to the server. I accept that into the time distanz of the
    error the display is frozen. Its unacceptable to restart the client !!.
    The following example demonstates my test-example:
    Server:
    1. Start
    2. waits for connecting (factory)
    3. answer time-requests
    Client:
    1. Start
    2. create a time class initially 1.jan.1970 00:00:00
    3. Start a timer displaying the time class every second
    4. start a timer connecting/reconnecting to the server and ask the servers actual time every second
    PS. Is the server to stubil programmed, so that a hang can exists?
    It would be nice, if anybody could answer me !!
    The following sources work correctly without solving the problem of the reconnect:
    ////////////// Echo.java
    package emi.server;
    import java.rmi.*;
    import java.util.*;
    public interface Echo
    extends Remote
    public Date getTime() throws RemoteException;
    ////////////// EchoClient.java
    package emi.server;
    //import emi.utility.basics.*;
    public class EchoClient
    public static void main(String args[]) throws Exception
    EchoClient echoclient1 = new EchoClient();
    //Check the argument count
    if (args.length != 1)
    System.err.println("Usage: EchoClient <server> --> EXIT");
    System.exit(0);
    // all of time relevant things
    Etim acttim = new Etim();
    // displaying continous the time
    EchoClientDisplay disp = new EchoClientDisplay(acttim);
    disp.StartTimer();
    // transfering continous the time from the server
    EchoClientTransfer trans = new EchoClientTransfer(acttim, args[0]);
    trans.StartTimer();
    ////////////// EchoClientDisplay.java
    package emi.server;
    import java.awt.event.*;
    import javax.swing.*;
    // displaying every 750 Milliseconds the value of the time
    public class EchoClientDisplay implements ActionListener
    private Timer tim;
    private Etim tact;
    public EchoClientDisplay(Etim tact)
    tim = new Timer(750, this);
    this.tact = tact;
    public void StartTimer()
    tim.setRepeats(true);
    tim.setInitialDelay(5);
    tim.start();
    public void actionPerformed(ActionEvent e )
    System.out.println(tact.toString());
    ////////////// EchoClientTransfer.java
    package emi.server;
    import java.rmi.Naming;
    import java.rmi.RMISecurityManager;
    import java.awt.event.*;
    import javax.swing.Timer;
    import java.util.Date;
    // transferring the actual time from the server
    public class EchoClientTransfer implements ActionListener
    private Etim tact;
    private String hostname;
    private Timer tim;
    private boolean init = false;
    private Echo echoRef1 = null;
    public EchoClientTransfer(Etim tact, String hostname)
    this.tact = tact;
    this.hostname = hostname;
    this.tim = new Timer(500, this);
    public void StartTimer()
    tim.setRepeats(true);
    tim.setInitialDelay(5);
    tim.start();
    public void actionPerformed(ActionEvent e )
    //>>>>>>>>>>> this construction doesnt work correctly, its only good until the first
    // network error
    try
    if( init == false )
    // Create and install the security manager
    System.setSecurityManager(new RMISecurityManager());
    //get the remote factory object from the registry
    String url = new String("rmi://"+ hostname +"/EchoFactory");
    EchoFactory remoteFactory = (EchoFactory)Naming.lookup(url);
    //get references to new EchoImpl instances
    echoRef1 = remoteFactory.getEcho("User Meyer");
    init = true;
    if( init = true )
    //make the remote calls
    Date d = echoRef1.getTime();
    tact.setDate(d);
    catch(Exception ee)
    System.out.println(ee.toString());
    init = false;
    //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ////////////// EchoFactory.java
    package emi.server;
    import java.rmi.RemoteException;
    import java.rmi.Remote;
    public interface EchoFactory extends Remote
    Echo getEcho(String userName) throws RemoteException;
    ////////////// EchoFactoryImpl.java
    package emi.server;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    public class EchoFactoryImpl extends UnicastRemoteObject implements EchoFactory
    EchoFactoryImpl() throws RemoteException {};
    public Echo getEcho(String userName) throws RemoteException
    EchoImpl echoRef = new EchoImpl(userName);
    return (Echo)echoRef;
    ////////////// EchoImpl.java
    package emi.server;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    import java.util.*;
    public class EchoImpl extends UnicastRemoteObject implements Echo
    private String userName;
    public EchoImpl() throws RemoteException
    public EchoImpl(String userName) throws RemoteException
    this.userName = userName;
    public Date getTime()
    Etim e = new Etim();
    e.setTimeAct();
    return e.get();
    ////////////// EchoServer.java
    package emi.server;
    import java.rmi.Naming;
    import java.rmi.RMISecurityManager;
    public class EchoServer
    public static void main(String args[]) throws Exception
    // Create and install the security manager
    System.setSecurityManager(new RMISecurityManager());
    // Create the servant instance for registration
    EchoFactory factoryRef = new EchoFactoryImpl();
    // Bind the object to the rmiregistry
    Naming.rebind("EchoFactory", factoryRef);
    System.out.println("Echo object ready and bound to the name 'EchoFactory'!");
    ////////////// Etim.java
    package emi.server;
    import java.util.*;
    import java.text.*;
    // this is my central class working up all time problems .. many hundred lines of code
    // I think, you must not look at this code ist setting and reading time
    // this is only a subset of methods for this example
    public class Etim
    private Date dat;
    private Calendar cal;
    public Etim()
    cal = Calendar.getInstance(); // Gregorianischer Kalender
    dat = new Date(0L); // January 1, 1970, 00:00:00
    cal.clear();
    * Zeit lesen.
    public Date get()
    return dat;
    // setting the time
    public void setDate( Date d )
    dat.setTime( d.getTime() );
    cal.setTime(dat);
    // gets my time-class to the current system-clock
    public void setTimeAct()
    long millis;
    millis = System.currentTimeMillis();
    setMilli(millis);
    * Zeit setzen.
    public void setMilli(long millis)
    dat.setTime(millis);
    cal.setTime(dat);
    // time in german format: day.month.year hour:minute:second:millisecond
    public String toString()
    return toStringTagMoJahr() + " " + toStringStdMiSek() +
    ":" + cal.get(Calendar.MILLISECOND);
    * Ausgabeformat Tag.Monat.Jahr (z.B. 01.01.2001).
    public String toStringTagMoJahr()
    SimpleDateFormat s = new SimpleDateFormat("dd.MM.yyyy");
    return s.format(dat);
    * Ausgabeformat Stunde:Minute:Sekunde (00:00:00 - 23:59:59).
    public String toStringStdMiSek()
    SimpleDateFormat s = new SimpleDateFormat("HH:mm:ss");
    return s.format(dat);

    Hello willy51,
    Thank you for answering.
    I think, your comment of the design is true - its a problem when starting up in a new enviroment and
    you have nobody who shows you the right direction at the beginning. Talking personally together only
    10 minutes is better than writing a noval.
    I thing the following model of a client works better:
    concept:
    - visualize a personal time class continously evgery second
    - if there is a connection to a server set the time-class with the server time
    - if you loss connection, try to reconnect
    question:
    in which situation hangs connectToServer() ?
    (whithout the simple errors : no rmiregistry, no rmi-server)
    public class EchoClient
    private String hostname;
    public static void main(String args[]) throws Exception
    // my internal TIME-Class
    Etim acttim = new Etim();
    // Create and install the security manager
    System.setSecurityManager(new RMISecurityManager());
    // remote call
    Echo echoRef1 = null;
    String url = new String("rmi://"+ servername:port +"/EchoFactory");
    // displaying continous the time, technic = swing.timer
    EchoClientDisplay disp = new EchoClientDisplay(acttim);
    disp.StartTimer();
    // transfering continous the time from the server, technic = swing.timer
    // The state of transfer from server = offline
    EchoClientTransfer trans = new EchoClientTransfer(acttim);
    trans.StartTimer();
    // Connect to server
    connectToServer(url, echoRef1, trans);
    // wait for ever, if connection failed, try every 5 seconds a reconnect to server
    while(true)
    // test, if connection failed. The connections fails if the Object EchoClientTransfer
    // get a error, when it asks the server for the time ( remote call )
    if(trans.getStatus() == false ) // test, if connection failed
    connectToServer(url, echoRef1, trans);
    // try it again after 5 seconds
    Thread.sleep(5000);
    private static void connectToServer(String url, Echo echoRef1, EchoClientTransfer trans)
    System.out.println("Retry connection");
    // Connect to server
    while( true )
    try
    //get the remote factory object from the registry
    EchoFactory remoteFactory = (EchoFactory)Naming.lookup(url);
    //get references to new EchoImpl instances
    echoRef1 = remoteFactory.getEcho("User Meyer");
    // reactivate Datatransfer because I have now a new connection to the server
    trans.reactivateAfterConnectionError(echoRef1);
    // end of initialisation
    break;
    catch( Exception e )
    //>>>>>>> Error initialising connection to server. try again after 5 seconds"
    Thread.sleep(5000); // retry after 5 seconds

  • RMI Rebind problem

    Hi
    I'm a novice on RMI and have been trying to learn the concept by copying the HelloWorld RMI example from the Java Tutorials to run on my Windows 98 PC. However, when I issued a DOS command: Java HelloImpl, the following error came up:
    " Access denied (java.net.SocketPermission .....1099 connect resolve)"
    Any suggestions what possible cause of the problem ?
    Thanks.

    check the permissions in your policy file.

  • RMI or plain JDBC???

    I'm in the planning stages for an application that will be run on client machines via Java Web Start. These applications are going to need to have access to a MS SQL Server, located on a separate machine, and I'm wondering if I should use RMI for all my database connections, queries, updates, etc., or should I just use JWS to launch my application, and include the location of the JDBC drivers in the .jnlp file, and handle all database calls and such on the client end. There are of course benefits and drawbacks to both. I would tend to lean towards RMI as it offers more security, but I'm new to the concept of RMI, and am clueless as to how to implement it, being the app is on a client machine and it needs access to the server. Don't know how to do that, but I'm searching the forums and Google for other cases of people doing the same thing I am looking at, and seeing how they implemented it. I'm not trolling for free code, just looking for examples that will help me create my own way of doing it. So, should I use RMI, or does my situation not warrant it and I can go with straight JDBC calls to the database. Thanks for any advice...
    James

    Unless there is a firewall between your client and server machines, or you anticipate being able to make significant use of server-side cacheing, then go with JDBC.
    If security is a really big deal (specifically you want to encrypt communications between clients & the server) then RMI offers some options that aren't available with JDBC, but an external solution such as IPSec is probably going to be easier to implement.
    D.

  • New @ RMI need help with  java.rmi.UnmarshalException: error unmarshalling

    Hi @ all out there,
    I'm new with Java RMI and have to write a EventSystem for an college project where clients can subscribe to a topic and get notified when someone publishes a message to the subscribed topic.
    At server-side I have a class called EventSystem that provides methods for subscribing and unsubscribing from topics, and also for posting messages (for publishers).
    To subscribe i thought that the client must specify the topic and also itself ( means that a client calls in this way: obj.subscribe("mytopic", this).
    The EventSystem handles a list of all clients, and whenever a new message is posted it goes trough all clients and invokes the handleMessage(String msg) method that all Clients have to provide.
    On my local machine without RMi this concept works just great.
    I now tried to get it working using RMI , but I get the following Exception when starting the client (the server starts fine) :
    Looking up for rmiregistry at 138.232.248.22:1099
    Subscriber exception:
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
            java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
            java.io.InvalidClassException: SubscriberImpl; SubscriberImpl; class invalid for deserialization
            at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:336)
            at sun.rmi.transport.Transport$1.run(Transport.java:159)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
            at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
            at java.lang.Thread.run(Thread.java:619)
            at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
            at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
            at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
            at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
            at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
            at $Proxy0.subscribe(Unknown Source)
            at SubscriberImpl.main(SubscriberImpl.java:48)
    Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
            java.io.InvalidClassException: SubscriberImpl; SubscriberImpl; class invalid for deserialization
            at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:293)
            at sun.rmi.transport.Transport$1.run(Transport.java:159)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
            at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: java.io.InvalidClassException: SubscriberImpl; SubscriberImpl; class invalid for deserialization
            at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:713)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1733)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
            at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
            at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:290)
            ... 9 more
    Caused by: java.io.InvalidClassException: SubscriberImpl; class invalid for deserialization
            at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:587)
            at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
            at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
            ... 13 moreI googled now for 2 hours but can't resolve the problem alone. As far as I can understand I have to serialize Objects that I want to send to the server, right?
    So how can i do this? I've never used serialization till now.
    any ideas how to solve this problem?
    greets from italy and sorry for my very weak english
    bd_italy

    A class has been modified after deployment. Stop the Registry, clean, recompile, and redeploy.

Maybe you are looking for

  • How to make a good picture/video movie

    i have a camera that has taken 4000x3000 pictures and 1280x720 HD videosand want to make a HD DVD movie i wanted to use premiere pro for making this movie because ive become slightly used to it i am using this on a 1600x900 17-inch laptop but i cant

  • 5th Generation iPod Battery Issues

    Hello all. I'm hoping someone can help me with an issue I recently started having. Both my wife and I have 5th generation iPods that we bought 13 months ago. We have been using them on my computer on a regular basis since then. About 3 weeks ago I st

  • Charts (bar and line) in a tablix

    Hi, I need to do this: As you can see the bar graphic is inside the tablix (this is an excel sample btw), I found this tutorial and it really helped me, the problem is the line chart (this one was good too), in my report looks like this How can I mak

  • Year End-Notes Emergency Contacts

    We have applied all the 2011 year-end notes and have discovered an error  It looks like anyone listed as an emergency contact on the family member dependent Infotype 0021 now appears as an emergency contact on the Health Insurance infotype 167 with a

  • Migrating sapwsdl file using SAP ES Explorer

    Is there any way to use the existing sapwsdl file which is created using SAP connector to SAP ES Explorer? Our aim is to use the SAP ES Explorer with Visual Studio 2005 version. Or is there any other way to migrate the application using SAP ES Explor