浏览 4998 次
锁定老帖子 主题:Ejb3.0--1
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2008-10-13  
Ejb3.0--1
  今天学习了一下午的ejb3.0遇见了一些麻烦,拿出来和大家分享一下。以免大家以后遇到同样的问题
  A)首先,我下载了jboss服务器,这个是ejb的运行环境,必不可少。
   B)我将他解压到/usr/jboos下,然后修改用户的profile文件vi /home/xiaocong/.bash_profile ;在里面添加
export JBOSS_HOME=/usr/jboss;
export PATH= $PATH:$JBOSS_HOME/bin;
(注)我已经安装了jdk1.5,并且已经设置好环境变量了,还要注意jboss文件夹的所有者啊!必要的时候使用root用户,chown一下。
C)ok,现在可以运行一下jboss了。
D)打开我的IDE,新建一个ejb工程HelloWorld。
E)创建个自己的包com.chenzhq.ejb.
F)创建一个无状态的会话bean(stateless session bean)的远程接口HelloWorldRemote.
package com.chenzhq.ejb;

import javax.ejb.Remote;

@Remote ({HelloWorldRemote.class})
public interface HelloWorldRemote {

	   public String say(String name);
}


G)创建Remote接口的实现。
package com.chenzhq.ejb;

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless//注意这里啊
@Remote ({HelloWorldRemote.class})//注意这里啊

public class HelloWorld implements HelloWorldRemote {

	   public String say(String name){
		   System.out.println(HelloWorld.class.getCanonicalName());
		   return name;
	   }
}

H)ok,写个ant脚本
<?xml version="1.0" encoding="UTF-8"?>
<project name="ejb" default="jar">
  
  <target name="jar">
      <jar destfile="D:\work\lib\helloworld.jar">
          <fileset dir="./classes">
             <include name="**/*.class"/>
             <include name="**/*.xml"/>
          </fileset>
      </jar>
  
  </target>

</project>

I)将helloworld.jar复制到/usr/jboss/server/all/deploy下。看看控制台是否有输出
15:40:51,714 INFO  [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=helloworld.jar,name=HelloWorld,service=EJB3 with dependencies:
15:40:51,757 INFO  [EJBContainer] STARTED EJB: com.chenzhq.ejb.HelloWorld ejbName: HelloWorld
15:40:51,781 INFO  [EJB3Deployer] Deployed: file:/usr/jboss/server/default/deploy/helloworld.jar
如果有上面的输出,说明是成功部署了。
在ie里输入http://ip:port访问jboss的jmx-console点击service=jndiView,然后是点击Output JNDI info as text下的invoke,查找HelloWorld。
J)在client端调用ejb的代码。
package com.chenzhq;

import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.chenzhq.ejb.HelloWorldRemote;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Properties props = new Properties();
		props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
		props.setProperty("java.naming.provider.url", "jnp://192.168.0.2:1099");//这里是我部署ejb的主机地址。
		props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); 
		
		try {
			InitialContext ic = new InitialContext(props);
			HelloWorldRemote hwr = ((HelloWorldRemote)ic.lookup("HelloWorld/remote"));
			System.out.println(hwr.say("chenzhq"));
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			System.out.print(e);
			e.printStackTrace();
		}
		
		// 

	}

}

Ok了,待续。。。。。。。。。。。。    
   发表时间:2008-10-23  
楼主是在linux环境下搞的?
0 请登录后投票
   发表时间:2008-10-24  
对,我比较喜欢linux。
0 请登录后投票
   发表时间:2008-10-24  
这种做法是用EJB2的做法来做EJB3的程序,实际上EJB3用起来比这个还要简单,以前写过一篇文章,不知道给弄哪儿去了,等我找到了贴过来。
0 请登录后投票
   发表时间:2008-11-02  
其实这一句@Remote ({HelloWorldRemote.class})//注意这里啊   完全可以去掉,而且远程接口里面的HelloWorldRemote.class也可以去掉,楼主可以试一试
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics