在本文主要介绍如何来开发一个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 Bean
的JNDI
名的前一部分,如果mappedName
属性的值是Company
,则该Session Bean
的JNDI
名是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
st1":*{behavior:url(#ieooui) }
注意:TestCompany.java
与company.jar
文件需要在同一目录下。
由于调用客户端的代码并不一定在安装WebLogic
的机器上运行,因此,在将TestCompany.class
和company.jar
(发布到客户端的这个jar
文件只需要Employee.class
和CompanyRemote.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.class
、company.jar
一同复制到客户端的机器上即可。并通过如下的命令来执行TestCompany.class
:
java
-
classpath .;company.jar;wlfullclient.jar TestCom
执行上面的命令后的输出结果如下面两个图所示:
Windows下的执行结果
Linux下的执行结果
|
0人
|
了这篇文章 |
类别: Java EE┆阅读(
0)┆评论(
0) ┆ 返回博主首页┆ 返回博客首页
上一篇 银河系列原创教程 下一篇 Struts1.x系列教程(9):上传任意多个文件