沉睡森林@漂在北京

本处文章除注明“转载”外均为原创,转载请注明出处。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  152 随笔 :: 4 文章 :: 114 评论 :: 0 Trackbacks
  做了一个ejb的小例子,开始利用jboss5出现了问题,后来换了3的版本就好了。下面是代码贴出来,主要是别人的代码改的,相信很多人都看过这个代码了。
package com.myejb.greet;

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

public interface Greet extends EJBObject{
    
public double calculateMagic(double seed) throws RemoteException;
}


package com.myejb.greet;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class GreetBean implements SessionBean {
    
    
private static final long serialVersionUID = 6729996959104578698L;

    
public double calculateMagic(double seed) {
        System.out.println(
"Someone called `calculateMagic!'");
        
return seed * Math.random();
    }

    
public GreetBean() {
    }

    
public void ejbCreate() {
        System.out.println(
"Create Greet EJB.");
    }

    
public void ejbRemove() {
        System.out.println(
"Remove Greet EJB.");
    }

    
public void ejbActivate() {
        System.out.println(
"Activate Greet EJB");
    }

    
public void ejbPassivate() {
        System.out.println(
"Passivate Greet EJB");
    }

    
/**
     * Set context for `Greet' EJB
     
*/
    
public void setSessionContext(SessionContext sc) {
        System.out.println(
"Set context for Greet EJB");
    }
}


package com.myejb.greet;

import java.rmi.RemoteException;

import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface GreetHome extends EJBHome {
    Greet create() 
throws RemoteException, CreateException;
}


下面是META-INF下面的XML配置文件:
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> 
<ejb-jar>
    
<description>jBoss test application </description>
    
<display-name>Test</display-name>
    
<enterprise-beans>
        
<session>
            
<ejb-name>GreetEJB</ejb-name>
            
<home>com.myejb.greet.GreetHome</home>
            
<remote>com.myejb.greet.Greet</remote>
            
<ejb-class>com.myejb.greet.GreetBean</ejb-class>
            
<session-type>Stateless</session-type>
            
<transaction-type>Bean</transaction-type>
        
</session>
    
</enterprise-beans>
</ejb-jar>

jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
    
<enterprise-beans>
        
<session>
            
<ejb-name>GreetEJB</ejb-name>
            
<jndi-name>GreetingEJB</jndi-name>
        
</session>
        
<secure>false</secure>
    
</enterprise-beans>
</jboss>
  

下面是测试java类:
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

import com.myejb.greet.Greet;
import com.myejb.greet.GreetHome;

public class TestMain {

    
/**
     * 
@param args
     
*/
    @SuppressWarnings(
"unchecked")
    
public static void main(String[] args) {
        Hashtable env 
= new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.jnp.interfaces.NamingContextFactory");
        env.put(Context.URL_PKG_PREFIXES, 
"org.jboss.naming");
        env.put(Context.PROVIDER_URL, 
"localhost:1099");

        
try {
            Context jndiContext 
= new InitialContext(env);
            System.out.println(
"Got context");
            Object ref 
= jndiContext.lookup("GreetingEJB");
            System.out.println(
"Got reference");
            GreetHome home 
= (GreetHome) PortableRemoteObject.narrow(ref, GreetHome.class);
            Greet greet 
= home.create();
            System.out.print(
"The magic number from server is ");
            System.out.println(greet.calculateMagic(
123.456));
        } 
catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}


posted on 2009-03-11 13:51 王总兵 阅读(890) 评论(2)  编辑  收藏

评论

# re: 一个EJB的小例子 2009-03-11 13:52 王兵
注意需要把C:\Program Files\jboss-3.2.5\client这个目录下面的一些关于client的jar包考到client的测试环境下

不然编译和运行都有问题  回复  更多评论
  

# re: 一个EJB的小例子[未登录] 2012-09-10 21:49 123
感觉有问题啊!
Greet greet = home.create();//这里返回的是什么对象?
System.out.println(greet.calculateMagic(123.456));//没有任何实现类的接口如果能调用方法?  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: