EJB的HelloWorld_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3657 | 回复: 1   主题: EJB的HelloWorld        下一篇 
java_along
注册用户
等级:上尉
经验:771
发帖:36
精华:0
注册:2014-2-17
状态:离线
发送短消息息给java_along 加好友    发送短消息息给java_along 发消息
发表于: IP:您无权察看 2014-4-24 10:05:48 | [全部帖] [楼主帖] 楼主

首先要下载安装JBOSStomcat还不支持EJB开发

我下的是jboss-4.2.3.GA,大家网上搜下很多的。

Jdk环境配置要先配好,就是JAVA_HOME,CLASSPATH,PATH

Jdk的环境配置我也不多介绍。

下面直接开始EJB简单的实例,入门当然首选HelloWorld

EJB分有状态会话Bean和无状态会话Bean

有状态会话Bean:可以理解为web开发里面的session,当你第一次访问的时候,服务器那边会给你建一个新的session专门给你保存信息,然后当你走了之后你的浏览器会把这个sessionId记住,当你下次再访问的时候把sessionId直接带过去,这个字服务器就会直接找到上次你用过的session,里面还保存着你的信息。

无状态会话Bean: 访问有状态会话Bean的时候会给为每个访问都new一个Bean,

访问无状态会话Bean的话会从实例池中取得已经创建好的Bean进行操作。

好,下面开始先写Ejbserver

先创建个接口 HelloWorld.java:

package test;
public interface HelloWorld {
      void sayHello();
}


就这么简单,普通的一个接口

下面是HelloWorldBean.java(最好是以Bean结尾,规范)

package test;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote(value=HelloWorld.class)
public class HelloWorldBean implements HelloWorld {
      public void sayHello() {
            System.out.println("hello world");
      }
}


用了2annotation,

@Stateless:就说明这是一个无状态会话Bean
@Remote:说明这是一个远程访问的Bean,当客户端访问的时候需要建立Socket连接,这样相较@Local来说就比较耗资源,如果你的Bean在本地能访问到的话,首选@Local,默认也是@Local


服务器就是这么简答。

代码敲好后,exportjar文件,放到jbossserver下的default下的deploy文件里

北京联动北方科技有限公司

jboss的控制台里就会出现相关信息。

就说明你的jar已经被jboss检测到,已经部署上去了。

那么接下来我们用client去调用ejb里的sayHello方法。

既然写客户端,那就再创建一个java project,然后把刚才写的project当做jar导入,或者直接把刚才export出去的jar导入都是可以的

package test;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class EjbClient {
      public static void main(String[] args) {
            try {
                  InitialContext init=new InitialContext();
                  HelloWorld helloworld=(HelloWorld)init.lookup("HelloWorldBean/remote");
                  helloworld.sayHello();
            } catch (NamingException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
            }
      }
}


代码也很少.

但是在运行之前还需要在src目录下创建一个jndi.properties文件,名字不能变

内容:

java.naming.provider.url=localhost\:1099
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory


这相当与jboss为我们提供的一个入口,去寻找我们需要的ejb

jboss里面部署了很多服务。Java怎么找到我们需要的呢。

通过jndi(Java Naming and Directory InterfaceJava命名和目录接口),好像有点拗口

就理解为,每个人都有一个名字,那么在jboss里跑的服务也是有名字的,你要找服务就要根据它的名字取找。

那么我们怎么知道我们刚才部署的jarjndi名字是什么呢,这时有个规范 默认的话是以HelloWorldBean/remote  也就是你实现类的类名+/+remote”这是远程调用的,本地的话就写local

Run:


北京联动北方科技有限公司

JBoss控制台输出hello world

感谢大家看到这里了~~~~~~~~~~~~~~~~




赞(0)    操作        顶端 
java_along
注册用户
等级:上尉
经验:771
发帖:36
精华:0
注册:2014-2-17
状态:离线
发送短消息息给java_along 加好友    发送短消息息给java_along 发消息
发表于: IP:您无权察看 2014-4-24 10:06:37 | [全部帖] [楼主帖] 2  楼

有问必答



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论