JAVA 从零开始EJB3 从配置到开发(二) 体验篇 (图)
2006-11-23 17:34
507 查看
JAVA 从零开始EJB3 从配置到开发(二) 体验篇
本系列教程的目的是将读者引入EJB3的开发大门,写出可以运行的东西出来.期间并无太多理论的东西,主要是实践操作步骤,希望读者能在"运行成功"的喜悦和鼓励中,对原有的代码进行加工,改造,达到融会贯通的目的.对于某些偏难的技术,我鼓励大家敢于"不求甚解",不要钻底层的具体实现,达到能用,会用,实用即可.
上篇我们讲了怎么搭建开发环境,本篇就带领大家快速体验一下写出第一个EJB3程序的快乐,并鼓励大家继续前进,EJB3并不难.
首先我们打开Eclipse,点击界面右上角图标,更换视图到JBoss AS视图
如图:13
然后我们点击新建->工程,建立一个EJB3的工程
如图:1
按下一步,直到选择服务器页面
如图:2
点击建立服务器按钮,出现选择服务器类型页面
如图:3
选择JBoss Inc->JBoss AS 4.0,然后根据上次所讲的内容,按照自己安装的路径填写
如图:4
实例名填写JBoss4
如图:5
然后就可以选择刚刚建立的服务器,并完成工程的设置了
如图:6
刚刚建立的工程结构
如图:7
接下来我们来建立第一个EJB程序,今天我们讲的是最简单的stateless bean,我们选择新建->其他->EJB3.0->session bean
如图:8
包名为com.sdna.session,bean名为HelloWorld
如图:9
建立完session bean后我们来建立测试类,建立一个含有main函数的类,包名com.sdna.client,类名为Main
如图:10
然后我们在工程根目录建立一个ANT文件,就是一个XML文件,名为build.xml,建立完后整个工程如下
如图:11
各文件代码如下
==========HelloWorld.java
package com.sdna.session;
import javax.ejb.Remote;
@Remote
public interface HelloWorld {
public String sayHello( String strMsg );
}
====================
==========HelloWorldBean.java
package com.sdna.session;
import javax.ejb.Stateless;
import com.sdna.session.HelloWorld;
public @Stateless class HelloWorldBean implements HelloWorld {
public String sayHello(String strMsg) {
// TODO Auto-generated method stub
System.out.println( strMsg );
return "Hello World!";
}
}
====================
==========Main.java
package com.sdna.client;
import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.sdna.session.HelloWorld;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
InitialContext ctx;
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "127.0.0.1:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
try {
ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
System.out.println( helloworld.sayHello("msg hello!") );
} catch (NamingException e) {
System.out.println(e.getMessage());
}
}
}
====================
==========build.xml
<?xml version="1.0"?>
<project name="JBoss" default="ejbjar" basedir=".">
<property name="project.name" value="ejb3lesson2" />
<property environment="env" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="classes.dir" value="bin" />
<path id="classpath">
<fileset dir="${jboss.home}/client">
<include name="**/*.jar" />
</fileset>
<pathelement location="${classes.dir}" />
</path>
<target name="clean">
<delete file="${basedir}/${project.name}.jar" />
<delete file="${jboss.home}/server/default/deploy/${project.name}.jar" />
</target>
<target name="ejbjar" depends="clean">
<jar jarfile="${project.name}.jar">
<fileset dir="${classes.dir}">
<include name="**/*.*" />
</fileset>
</jar>
<copy file="${project.name}.jar" todir="${jboss.home}/server/default/deploy" />
</target>
</project>
====================
我们在左下脚可以看到服务器信息,启动它
如图:12
然后点击build.xml,右键,选择run as->ant build,对我们写的程序进行打包,并部署到JBoss服务器,JBoss服务器支持热部署,所以不用重新启动它就能完成部署
然后我们点击Main.java,右键,右键,选择run as->java appliction,可以看到Console的运行结果
如图:15
我们点击Console窗口右上角,选择JBoss的Console,可以看到我们写在session bean里面那句语句的执行结果
如图:14
如果上述运行成功,我们接下来在胜利的喜悦中看看其中的一些奥秘
从头看起,首先我们看我们建立的HelloWorld接口
@Remote
public interface HelloWorld {
public String sayHello( String strMsg );
}
@Remote这个注释表明这个借口支持远程调用
我们再来看看HelloWorldBean这个实现类,它实现了HelloWorld接口定义的方法
public @Stateless class HelloWorldBean implements HelloWorld {
public String sayHello(String strMsg) {
// TODO Auto-generated method stub
System.out.println( strMsg );
return "Hello World!";
}
}
这里的@Stateless表明这个bean是没有状态的,也就是说这个实例运行完毕后就要被自动销毁的
我们接下来看怎么调用EJB的,我们看Main这个测试类
InitialContext ctx;
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "127.0.0.1:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
try {
ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
System.out.println( helloworld.sayHello("msg hello!") );
} catch (NamingException e) {
System.out.println(e.getMessage());
}
InitialContext 是javax.naming下的一个类,用来做JNDI调用的 Properties为属性类,给我们建立调用时设置的属性,ctx.lookup("HelloWorldBean/remote");这个是JNDI根据名字来请求一个HelloWorldBean类的实例,支持remote
传送回来的对象我们用HelloWorld借口来保存和使用它,接下来的就跟普通java编程一样了,怎么样,是不是很简单呢,短短几十行代码,我们就走进了EJB3的大门啦~呵呵~~~
下次我们来讲Statefull bean,同样也不难,ant留到下篇再讲,刚开始少少讲一点,能成功就是最大的动力.
本系列教程的目的是将读者引入EJB3的开发大门,写出可以运行的东西出来.期间并无太多理论的东西,主要是实践操作步骤,希望读者能在"运行成功"的喜悦和鼓励中,对原有的代码进行加工,改造,达到融会贯通的目的.对于某些偏难的技术,我鼓励大家敢于"不求甚解",不要钻底层的具体实现,达到能用,会用,实用即可.
上篇我们讲了怎么搭建开发环境,本篇就带领大家快速体验一下写出第一个EJB3程序的快乐,并鼓励大家继续前进,EJB3并不难.
首先我们打开Eclipse,点击界面右上角图标,更换视图到JBoss AS视图
如图:13
然后我们点击新建->工程,建立一个EJB3的工程
如图:1
按下一步,直到选择服务器页面
如图:2
点击建立服务器按钮,出现选择服务器类型页面
如图:3
选择JBoss Inc->JBoss AS 4.0,然后根据上次所讲的内容,按照自己安装的路径填写
如图:4
实例名填写JBoss4
如图:5
然后就可以选择刚刚建立的服务器,并完成工程的设置了
如图:6
刚刚建立的工程结构
如图:7
接下来我们来建立第一个EJB程序,今天我们讲的是最简单的stateless bean,我们选择新建->其他->EJB3.0->session bean
如图:8
包名为com.sdna.session,bean名为HelloWorld
如图:9
建立完session bean后我们来建立测试类,建立一个含有main函数的类,包名com.sdna.client,类名为Main
如图:10
然后我们在工程根目录建立一个ANT文件,就是一个XML文件,名为build.xml,建立完后整个工程如下
如图:11
各文件代码如下
==========HelloWorld.java
package com.sdna.session;
import javax.ejb.Remote;
@Remote
public interface HelloWorld {
public String sayHello( String strMsg );
}
====================
==========HelloWorldBean.java
package com.sdna.session;
import javax.ejb.Stateless;
import com.sdna.session.HelloWorld;
public @Stateless class HelloWorldBean implements HelloWorld {
public String sayHello(String strMsg) {
// TODO Auto-generated method stub
System.out.println( strMsg );
return "Hello World!";
}
}
====================
==========Main.java
package com.sdna.client;
import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.sdna.session.HelloWorld;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
InitialContext ctx;
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "127.0.0.1:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
try {
ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
System.out.println( helloworld.sayHello("msg hello!") );
} catch (NamingException e) {
System.out.println(e.getMessage());
}
}
}
====================
==========build.xml
<?xml version="1.0"?>
<project name="JBoss" default="ejbjar" basedir=".">
<property name="project.name" value="ejb3lesson2" />
<property environment="env" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="classes.dir" value="bin" />
<path id="classpath">
<fileset dir="${jboss.home}/client">
<include name="**/*.jar" />
</fileset>
<pathelement location="${classes.dir}" />
</path>
<target name="clean">
<delete file="${basedir}/${project.name}.jar" />
<delete file="${jboss.home}/server/default/deploy/${project.name}.jar" />
</target>
<target name="ejbjar" depends="clean">
<jar jarfile="${project.name}.jar">
<fileset dir="${classes.dir}">
<include name="**/*.*" />
</fileset>
</jar>
<copy file="${project.name}.jar" todir="${jboss.home}/server/default/deploy" />
</target>
</project>
====================
我们在左下脚可以看到服务器信息,启动它
如图:12
然后点击build.xml,右键,选择run as->ant build,对我们写的程序进行打包,并部署到JBoss服务器,JBoss服务器支持热部署,所以不用重新启动它就能完成部署
然后我们点击Main.java,右键,右键,选择run as->java appliction,可以看到Console的运行结果
如图:15
我们点击Console窗口右上角,选择JBoss的Console,可以看到我们写在session bean里面那句语句的执行结果
如图:14
如果上述运行成功,我们接下来在胜利的喜悦中看看其中的一些奥秘
从头看起,首先我们看我们建立的HelloWorld接口
@Remote
public interface HelloWorld {
public String sayHello( String strMsg );
}
@Remote这个注释表明这个借口支持远程调用
我们再来看看HelloWorldBean这个实现类,它实现了HelloWorld接口定义的方法
public @Stateless class HelloWorldBean implements HelloWorld {
public String sayHello(String strMsg) {
// TODO Auto-generated method stub
System.out.println( strMsg );
return "Hello World!";
}
}
这里的@Stateless表明这个bean是没有状态的,也就是说这个实例运行完毕后就要被自动销毁的
我们接下来看怎么调用EJB的,我们看Main这个测试类
InitialContext ctx;
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "127.0.0.1:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
try {
ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
System.out.println( helloworld.sayHello("msg hello!") );
} catch (NamingException e) {
System.out.println(e.getMessage());
}
InitialContext 是javax.naming下的一个类,用来做JNDI调用的 Properties为属性类,给我们建立调用时设置的属性,ctx.lookup("HelloWorldBean/remote");这个是JNDI根据名字来请求一个HelloWorldBean类的实例,支持remote
传送回来的对象我们用HelloWorld借口来保存和使用它,接下来的就跟普通java编程一样了,怎么样,是不是很简单呢,短短几十行代码,我们就走进了EJB3的大门啦~呵呵~~~
下次我们来讲Statefull bean,同样也不难,ant留到下篇再讲,刚开始少少讲一点,能成功就是最大的动力.
相关文章推荐
- JAVA 从零开始EJB3 从配置到开发(一) 开发环境配置篇 (图)
- Java 学习记录(一) 从零开始,初识 java,配置java开发环境
- 第一章 java开发工具及环境配置
- 配置个舒心的 Java 开发环境
- java以及javaweb开发组件,开发环境和开发工具安装配置(一:java环境--最简单的方式)
- 配置整理——Ubuntu下配置Java Spring开发环境
- mac下简单java开发环境配置
- java开发环境的配置
- 最火区块链 Java从零开始开发区块链
- linux下java开发环境配置
- Java——开发环境配置
- 正式学习java并安装配置开发环境之前,了解一些java的专业术语
- Ubuntu 16.04安装OneinStack以及配置java开发环境
- linux Java开发工具安装与配置
- java开发环境配置及软件下载
- JAVA开发环境的配置
- linux java开发环境配置
- 03--Java开发环境配置
- Linux下安装并使用Java开发opencv的配置
- Java开发环境配置