在一个JVM中调用用
Context ctx = new InitContext();
就行了,
有时连接时必须加上用户名和密码 ??
什么时候?

解决方案 »

  1.   

    那是因为你在建立EJB服务器时,它需要你配置数据源,那个时候会叫你输入用户名和密码!
    直接用Context ctx = new InitContext();是因为有默认的配置!
      

  2.   

    package testses;import javax.naming.*;
    import java.util.Properties;
    import javax.rmi.PortableRemoteObject;public class TestSesTestClient {
        static final private String ERROR_NULL_REMOTE = "Remote interface reference is null.  It must be created by calling one of the Home interface methods first.";
        static final private int MAX_OUTPUT_LINE_LENGTH = 100;
        private boolean logging = true;
        private TestSesHome testSesHome = null;
        private TestSes testSes = null;    //Construct the EJB test client
        public TestSesTestClient() {
            long startTime = 0;
            if (logging) {
                log("Initializing bean access.");
                startTime = System.currentTimeMillis();
            }        try {
                //get naming context
                Context ctx = getInitialContext();            //look up jndi name
                Object ref = ctx.lookup("TestSes");            //cast to Home interface
                testSesHome = (TestSesHome) PortableRemoteObject.narrow(ref, TestSesHome.class);
                if (logging) {
                    long endTime = System.currentTimeMillis();
                    log("Succeeded initializing bean access.");
                    log("Execution time: " + (endTime - startTime) + " ms.");
                }
            }
            catch(Exception e) {
                if (logging) {
                    log("Failed initializing bean access.");
                }
                e.printStackTrace();
            }
        }    private Context getInitialContext() throws Exception {
            String url = "t3://jerry:7001";
            String user = null;
            String password = null;
            Properties properties = null;
            try {
                properties = new Properties();
                properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
                properties.put(Context.PROVIDER_URL, url);
                if (user != null) {
                    properties.put(Context.SECURITY_PRINCIPAL, user);
                    properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
                }            return new InitialContext(properties);
            }
            catch(Exception e) {
                log("Unable to connect to WebLogic server at " + url);
                log("Please make sure that the server is running.");
                throw e;
            }
        }    //----------------------------------------------------------------------------
        // Methods that use Home interface methods to generate a Remote interface reference
        //----------------------------------------------------------------------------    public TestSes create() {
            long startTime = 0;
            if (logging) {
                log("Calling create()");
                startTime = System.currentTimeMillis();
            }
            try {
                testSes = testSesHome.create();
                if (logging) {
                    long endTime = System.currentTimeMillis();
                    log("Succeeded: create()");
                    log("Execution time: " + (endTime - startTime) + " ms.");
                }
            }
            catch(Exception e) {
                if (logging) {
                    log("Failed: create()");
                }
                e.printStackTrace();
            }        if (logging) {
                log("Return value from create(): " + testSes + ".");
            }
            return testSes;
        }    //----------------------------------------------------------------------------
        // Methods that use Remote interface methods to access data through the bean
        //----------------------------------------------------------------------------    public String getName() {
            String returnValue = "";
            if (testSes == null) {
                System.out.println("Error in getName(): " + ERROR_NULL_REMOTE);
                return returnValue;
            }
            long startTime = 0;
            if (logging) {
                log("Calling getName()");
                startTime = System.currentTimeMillis();
            }        try {
                returnValue = testSes.getName();
                if (logging) {
                    long endTime = System.currentTimeMillis();
                    log("Succeeded: getName()");
                    log("Execution time: " + (endTime - startTime) + " ms.");
                }
            }
            catch(Exception e) {
                if (logging) {
                    log("Failed: getName()");
                }
                e.printStackTrace();
            }        if (logging) {
                log("Return value from getName(): " + returnValue + ".");
            }
            return returnValue;
        }    //----------------------------------------------------------------------------
        // Utility Methods
        //----------------------------------------------------------------------------    private void log(String message) {
            if (message == null) {
                System.out.println("-- null");
                return ;
            }
            if (message.length() > MAX_OUTPUT_LINE_LENGTH) {
                System.out.println("-- " + message.substring(0, MAX_OUTPUT_LINE_LENGTH) + " ...");
            }
            else {
                System.out.println("-- " + message);
            }
        }
        //Main method    public static void main(String[] args) {
            TestSesTestClient client = new TestSesTestClient();
            try{
                client.create();
                String name=client.getName();
                System.out.println ("Name form the Test client="+name);
            }
            catch (Exception ex){}
        }
        // Use the client object to call one of the Home interface wrappers
        // above, to create a Remote interface reference to the bean.
        // If the return value is of the Remote interface type, you can use it
        // to access the remote interface methods.  You can also just use the
        // client object to call the Remote interface wrappers.
    }