随笔 - 312, 文章 - 14, 评论 - 1393, 引用 - 0

导航

<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

公告

关注我的新浪微博

我的著作









常用链接

留言簿(126)

我参与的团队

随笔分类(818)

随笔档案(310)

文章分类(1)

文章档案(8)

相册

ADSL、3G查询

CSDN

eclipse

ibm

Java EE

Linux

Web

云服务

代理网站

关注的网站

协议

喜欢的Blog

国内广告平台

图书出版

在线培训

开发工具

微博客户端

手机铃声

操作系统

  • ReactOS
  • 一个与windowXP/2003兼容的操作系统

数学

文件格式

源码资源

移动(Mobile)

编程语言

英语学习

最新随笔

搜索

  •  

积分与排名

  • 积分 - 1969740
  • 排名 - 6

最新评论

阅读排行榜

评论排行榜

Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)

本文为原创,如需转载,请注明作者和出处,谢谢!

    在本文主要介绍如何来开发一个Stateless Session Bean,并在未安装WebLogic10的机器上访问Session Bean。开发EJB3 Stateless Session Bean要比开发EJB2 Stateless Session Bean容易得多,只需要几个注释就可以搞定。读者可按如下的步骤来开发和调用EJB3 Stateless Session Bean

1步:编写远程接口

    每一个Session Bean需要一个远程接口,该接口的代码如下:

package com.earth;

import javax.ejb.Remote;

//  此处必须使用@Remote注释指定该接口为远程接口
@Remote
public interface CompanyRemote
{
    
public String getName();
    
public Employee[] getEmployees();
}

    CompanyRemote接口中定义了两个方法,分别返回一个字符串和一个Employee类型的数组。

2步:编写Employee

    Employee类是一个实现implements java.io.Serializable接口的JavaBean,代码如下:

package com.earth;

public class Employee implements java.io.Serializable
{
    
private String name;
    
private String job;
    
private int age;
    
public String getName()
    {
        
return name;
    }
    
public void setName(String name)
    {
        
this.name = name;
    }
    
public String getJob()
    {
        
return job;
    }
    
public void setJob(String job)
    {
        
this.job = job;
    }
    
public int getAge()
    {
        
return age;
    }
    
public void setAge(int age)
    {
        
this.age = age;
    }
}

3步:编写Stateless Session Bean

    Session Bean需要实现CompanyRemote接口,代码如下:

package com.earth;

import java.util.List;
import java.util.ArrayList;
import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless(mappedName 
= "Company")
public class Company implements CompanyRemote
{
    
public Employee[] getEmployees()
    {
        Employee[] employees 
= new Employee[2];
        employees[
0= new Employee();
        employees[
0].setName("superman");
        employees[
0].setJob("CEO");
        employees[
0].setAge(1234);
        
        employees[
1= new Employee();
        employees[
1].setName("擎天柱");
        employees[
1].setJob("CTO");
        employees[
1].setAge(4321);
        
        
return employees;
    }
    
public String getName()
    {        
        
return "地球软件有限公司";
    }
}

    这个Session Bean使用了@Stateless注释指定了该Session Bean是无状态的,并使用了mappedName属性指定该Session BeanJNDI名的前一部分,如果mappedName属性的值是Company,则该Session BeanJNDI名是Company#com.earth.CompanyRemote

4步:编译.java文件,并生成.jar文件


    将上面三个.java文件放到同一个目录下,并使用如下的命令生成相应的.class文件:

javac -d . -classpath .;C:\bea\wlserver_10.3\server\lib\weblogic.jar *.java

    注意:在编译.java文件时要将在classpath环境变量或javac-classpath参数中指定weblogic.jar文件,假设WebLogic10安装在了C盘的bea目录,则weblogic.jar文件位于C:"bea"wlserver_10.3"server"lib目录中,本例使用了weblogic10.3
    在生成.class文件后,使用如下的命令生成company.jar文件:

jar cvf company.jar com


5步:发布EJB

    发布EJB的方法很多,然而最简单的是直接将company.jar文件复制到如下的目录:

C:\bea\user_projects\domains\base_domain_new\autodeploy

    其中base_domain_new是域名,读者也可将company.jar文件复制到其他域的autodeploy目录中。
    启动Weblogic,该EJB自动发布。读者可以使用如下的URL来查看在当前Weblogic服务器中注册的JNDI


http://localhost:7001/console/consolejndi.portal?_nfpb=true&_pageLabel=JNDIHomePage&server=AdminServer

    其中AdminServer为Weblogic的服务名,可能在读者的机器上是其他的服务名,请使用如下的URL进行Weblogic Console进行查看:

http://localhost:7001/console

    安装EJB后,本机注册的JNDI如下图所示。


6
步:编写客户端程序

    调用EJB的客户端代码如下:

import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.earth.*;

public class TestCompany
{
    
public static void main(String[] args) throws Exception
    {

        Properties props 
= new Properties();
        props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                
"weblogic.jndi.WLInitialContextFactory");
        props.setProperty(Context.PROVIDER_URL, 
"t3://192.168.17.127:7001");
        InitialContext ctx 
= new InitialContext(props);
        CompanyRemote companyRemote 
= (CompanyRemote) ctx
                .lookup(
"Company#com.earth.CompanyRemote");
        System.out.println(companyRemote.getName());
        Employee[] employees 
= companyRemote.getEmployees();
        
for (Employee employee : employees)
        {
            System.out.println(
"name:" + employee.getName());
            System.out.println(
"job:" + employee.getJob());
            System.out.println(
"age:" + employee.getAge());
            System.out.println(
"-------------------------");            
        }
    }
}

    使用如下的命令编译TestCompany.java

javac  -classpath .;company.jar;E:\bea\wlserver_10.3\server\lib\weblogic.jar TestCompany.java

    注意:TestCompany.javacompany.jar文件需要在同一目录下。

   
由于调用客户端的代码并不一定在安装WebLogic的机器上运行,因此,在将TestCompany.classcompany.jar(发布到客户端的这个jar文件只需要Employee.classCompanyRemote.class文件即可,Company.class可以从该jar文件中删除)发布到客户端时还需要带一些WebLogic自身的jar文件。虽然Weblogic中有一个wlclient.jar文件,但光有这个文件还不够,不了方便提取客户端需要的jar文件,Weblogic提供了一个jar包,通过该包,可以将客户端需要的所有.class文件打成一个jar包。
    这个jar文件是C:\bea\modules\com.bea.core.jarbuilder_1.2.0.0.jar,可通过如下的命令行来生成客户端需要的jar包:

    java -jar ../../../modules/com.bea.core.jarbuilder_1.2.0.0.jar

    注意:上面的命令必须在C:\bea\wlserver_10.3\server\lib目录中执行。

    在执行上面的命令后,将在E:\bea\wlserver_10.3\server\lib目录生成一个wlfullclient.jar文件,将该文件与TestCompany.classcompany.jar一同复制到客户端的机器上即可。并通过如下的命令来执行TestCompany.class

    java -classpath .;company.jar;wlfullclient.jar TestCom

    执行上面的命令后的输出结果如下面两个图所示:



Windows下的执行结果



Linux下的执行结果





Android开发完全讲义(第2版)(本书版权已输出到台湾)

http://product.dangdang.com/product.aspx?product_id=22741502



Android高薪之路:Android程序员面试宝典 http://book.360buy.com/10970314.html


新浪微博:http://t.sina.com.cn/androidguy   昵称:李宁_Lining

posted on 2009-02-08 21:50 银河使者 阅读(4376) 评论(6)  编辑  收藏 所属分类: java 原创ejb3

评论

# re: Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)[未登录]  回复  更多评论   

生成的wlfullclient.jar好大啊
2009-03-27 17:28 | 哈哈

# re: Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)  回复  更多评论   

没办法,现在一般在web应用中调用ejb,所有部署在服务端也无所谓了。哈哈
2009-03-27 19:44 | 银河使者

# re: Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)  回复  更多评论   

thanks
2009-04-05 14:37 | lyj

# re: Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)  回复  更多评论   

用appc生成的stubs文件是不是会小一点?我没找到设置环境的资料。
2009-04-05 14:53 | lyj

# re: Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)  回复  更多评论   

感谢博主,写得很详细。解决问题了!
2011-08-13 21:57 | 一闲人

# re: Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)  回复  更多评论   

楼主写得很好,对EJB一窍不通,通过这个例子稍微了解了一些,谢谢楼主
2012-12-03 16:24 | 陈烨

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


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问