1、如果运行程序shutdown.bat可以结束JBOSS服务。关闭JBOSS服务只需要输入shutdown S命令即可(注意:S是大写)。1.4 检验JBOSS是否成功启动打开http:/localhost:8080/jmx-console/地址,可以看到JMX Agent View(如图1),里面各种参数啊列表啊什么的;8083/是空白页面,说明你已经安装和并且启动成功了。2 发布JSP程序2.1 编写jsp程序先写一个简单的index.jsp程序,代码如下:2.2 制作成.war文件大家可能不太了解jar、war、ear等文件的关系,icech只给出他们的全称,其余的就自己到网上寻找吧 JA
2、R:Java Archive WAR:Web Archive EAR:Enterprise ArchiveJDK提供了jar的工具,就在java所在目录的bin目录下有一个jar.exe的应用程序。使用方法如下:用法:jar ctxuvfm0M jar-文件 manifest-文件 -C 目录 文件名 .选项: -c 创建新的存档 -t 列出存档内容的列表 -x 展开存档中的命名的(或所有的文件 -u 更新已存在的存档 -v 生成详细输出到标准输出上 -f 指定存档文件名 -m 包含来自标明文件的标明信息 -0 只存储方式;未用ZIP压缩格式 -M 不产生所有项的清单(manifest文件 -
3、i 为指定的jar文件产生索引信息 -C 改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。清单(manifest文件名和存档文件名都需要被指定,按m 和 f标志指定的相同顺序。示例1:将两个class文件存档到一个名为 classes.jar 的存档文件中: jar cvf classes.jar Foo.class Bar.class示例2:用一个存在的清单(manifest)文件 mymanifest 将 foo/ 目录下的所有 文件存档到一个名为 jar cvfm classes.jar mymanifest -C foo/ .我的index.jsp文件临时
4、存放在D:ejb里面,所以打包的命令如下:D:ejbjar cvf hello.war index.jsp这里我生成了hello.war文件(小技巧:war或者jar文件可以用winzip或winrar文件解压)。2.3 发布war一般配置好路径就不会有什么问题了,发布war十分简单,只要将hello.war文件拷贝到%jboss_home%serverdefaultdeploy目录就可以了(如图02)。2.4 测试发布的war打开浏览器,输入网址:http:8080/hello/,就可以看到(如图03):3 发布Servlet程序3.1 编写Servlet程序一个简单的Servlet程序,代
5、码如下:HelloWorld.javapackage hello;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException response.setContentType(text/html); PrintW
6、riter out = response.getWriter(); out.println(Hello World!out.println( 3.2 编写一个web.xmlweb.xml代码如下: HelloWorld hello2.HelloWorld /HelloWorld3.3 编译Servlet编译Servlet以前我在“Servlet的编译安装和运行”中已经讲到。使用JBOSS有所不同,但一样简单。就是在CLASSPATH中加入:%jboss_home%serverdefaultlibjavax.servlet.jar3.4 相关文件的路径首先要建立一个hello目录,在这个目录里面
7、建立WEB-INF目录(注意字母要大写),将web.xml保存在WEB-INF目录中;然后建立WEB-INFclasseshello目录,将HelloWorld.java和编译好的Helloworld.class文件保存在里面。(见图4)(图4)3.5如上面的方法,我在执行以下命令:ejbhellojar cvf hello.war *.*生成的hello.war文件拷贝到%jboss_home%serverdefaultdeploy目录就行了。3.6下一步我们要测试发布Servlet是否成功,在浏览器中输入地址:8080/hello/HelloWorld,如果我们看到图5样,就说明发布成功了
8、!4 发布EJB程序我们来编写一段最简单的“Hello World”无状态会话Bean,我们创建的无状态会话Bean运行在分布式对象架构里,执行着重要的任务:向客户端返回一字符串“Hello,World!”4.1 创建Remote接口我们以编写Remote接口开始,Remote接口复制了Bean“暴露”的每一个商务方法,由EJB容器实现Remote接口,实现的结果就是EJB对象。EJB对象将所有的客户端请求委托给实际的Bean。源代码如下:Hello.javapackage hello.ejb;/* * Remote interface for Enterprise Bean: Hello *
9、/public interface Hello extends javax.ejb.EJBObject * 唯一的方法hello,向客户端返回问候。 public String hello() throws java.rmi.RemoteException;4.2 实现“Hello,world!”的Bean接下来,创建Bean本身。我们将实现一个商务方法hello()方法,我们还增加了所需的EJB容器回调方法。程序源代码如下“:HelloBean.java * Bean implementation class for Enterprise Bean:public class HelloBea
10、n implements javax.ejb.SessionBean private javax.ejb.SessionContext mySessionCtx; /* * getSessionContext public javax.ejb.SessionContext getSessionContext() return mySessionCtx; * setSessionContext public void setSessionContext(javax.ejb.SessionContext ctx) mySessionCtx = ctx; * ejbActivate public v
11、oid ejbActivate() * ejbCreate public void ejbCreate() throws javax.ejb.CreateException * ejbPassivate public void ejbPassivate() * ejbRemove public void ejbRemove() / / 商务方法 public String hello() return Hello,World!;4.3 创建“Hello,World!”Home接口这里编写的Home接口详细说明了生成和清除EJB对象方法。程序源代码如下:HelloHome.java * Home
12、 interface for Enterprise Bean:public interface HelloHome extends javax.ejb.EJBHome * Creates a default instance of Session Bean: public Hello create() throws javax.ejb.CreateException, java.rmi.RemoteException;4.4 EJB部署描述ejb-jar.xml helloEJB Hello hello.ejb.HelloHome hello.ejb.Hello hello.ejb.Hello
13、Bean Stateless Container下面icech来简单介绍一下XML部署描述的内容。4.5 客户端代码客户端代码执行以下几个任务: 查找Home对象; 使用Home对象生成EJB对象; 对EJB对象调用hello()方法; 从内存中清除EJB对象。HelloClient.javaimport java.util.*;import javax.naming.InitialContext;import javax.rmi.PortableRemoteObject;public class HelloClient public static void main(String args)
14、 try /jndi配置,硬编码到java中,应实现为外部属性文件 Properties p=new Properties(); p.setProperty(java.naming.factory.initial, org.jnp.interfaces.NamingContextFactoryjava.naming.provider.urllocalhost:1099 /out print jndi配置 p.list(System.out); / Get a naming context InitialContext jndiContext = new InitialContext(p); S
15、ystem.out.println(Got context / Get a reference to the Interest Bean /jboss默认jndi名为ejb-jar.xml中的:ejb-name Object ref = jndiContext.lookup(HelloGot reference / Get a reference from this to the Beans Home interface HelloHome home = (HelloHome) PortableRemoteObject.narrow(ref, HelloHome.class); / Creat
16、e an Hello object from the Home interface Hello hello = home.create(); / call the hello() method System.out.println(hello.hello(); catch(Exception e) System.out.println(e.toString();4.6 EJB的发布首先看一下各文件存在的位置。4.6.1 编译EJB编译EJB首先要配置环境变量。要将:%jboss_home%clientjboss-j2ee.jar加入到CLASSPATH中才能进行编译。编译的方法就很简单了,执行
17、以下语句即可完成编译。javac helloejb*.java4.6.2 发布Server端将helloejb目录的Hello.java程序、HelloBean.java程序、HelloHome.java程序编译,同META-INF目录下ejb-jar.xml文件打包成hello.jar文件,拷贝到%jboss_home%serverdefaultdeploy目录(如图6)。jar cvf hello.jar *.* META-INF/*.xml4.6.3 发布Client端直接将client目录拷贝到%jboss_home%serverdefaultdeploy目录。4.7 运行EJB要运行
18、先配置运行EJB的环境变量。运行EJB要在CLASSPATH里面增加如下几条语句。%jboss_home%clientjbossall-client.jar;%jboss_home%clientjnet.jar;%jboss_home%clientlog4j.jar;然后进入client目录,输入命令:java hello.ejb.HelloClient看到客户端如下显示,说明部署和发布EJB成功(如图7)。5 小结文中很多地方可能没有说得很详尽,还需要配合一些其他文档来学习,因为icech对JBOSS也了解的比较粗,希望有什么意见大家提出来,共同探讨。参考资料: JBOSS3.0.4配置及使用初步,作者:acute jsp,servlet,ejb 3种j2ee应用的实施,作者:陈鹏 精通EJB,作者:Ed Roman笔记整理: 姓名:icech 主页:西部电子 Email:icech
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1