ejb入门,向大神求救
ejb代码package com.sxt;public interface FirstEJB {
public String say(String str) ;
}package com.sxt;import javax.ejb.Remote;
import javax.ejb.Stateless;@Stateless
@Remote
public class FirstBean implements FirstEJB { public String say(String str) {
// TODO Auto-generated method stub
return "Hellow"+ str;
}}客户端
package com.bjsxt;import java.util.Hashtable;
import java.util.Properties;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.sxt.FirstEJB;public class FirstClient {
public static void main(String[] args) throws Exception {
try {
InitialContext context = new InitialContext();
FirstEJB ejb=(FirstEJB)context.lookup("FirstBean/Remote");
 
String  s = ejb.say("world");
System.out.println(s);
} catch (NamingException e) { e.printStackTrace();
}

       /* Properties props=new Properties();
       props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
       props.setProperty("java.naming.provider.url","localhost:4447");
       props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
       try
       {
           InitialContext context=new InitialContext(props);
           FirstEJB hello=(FirstEJB)context.lookup("FirstBean/remote");
           System.out.println(hello.say("Hello Kitty"));
       }
       catch(NamingException e)
       {
           e.printStackTrace();
           System.out.println(e.getMessage());
       }*/


 /* Hashtable<String, String> jndiProperties = new Hashtable<String, String>();
          jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
          try {
              Context context = new InitialContext(jndiProperties);
             
          
              final String moduleName = "FirstBean";
             
              Object obj = context.lookup("FirstBean/Remote");
             
              FirstEJB hwr =
                      (FirstEJB)obj;
              String say = hwr.say("XiXia");
              System.out.println(say);
          } catch (NamingException e) {
              e.printStackTrace();
          }*/

}
}
使用jndi.properties时java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhostexception:java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost使用jboss-ejb-client.properties时remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=falseexception:javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:344)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at com.bjsxt.FirstClient.main(FirstClient.java:15)
配置写代码中也会报其中一个