Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 429|回复: 0

[jsp学习]JBOSS3.0.4配置及使用初步

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 08:04:17 | 显示全部楼层 |阅读模式
    前言
            JBOSS推出3.0.4版本其实已经很久很久啦,可是呢,网上关于它的介绍就少得可怜,而且仅有的几篇介绍都并不完全正确,很多甚至是直接拷贝jboss2.4.4的相关内容。那些抄袭者没有想到,从jboss2.4.4到jboss3.0.4之间有很大的飞跃,甚至目录结构也不相同了,相关配置更不用多说,他们那些拷贝来的作品根本不能正确指导人们学习jboss。

            为了学习jboss,我想大多数人可能都要从http://www.jboss.org那里下载其本身的文档,如3.x版本就有文档JBoss.3.0QuickStart.Draft3.pdf来进行入门指导。但是令人万万没有想到的是,JBoss.3.0QuickStart.Draft3.pdf文档中甚至也有错误的地方,完全按照它的指引,大家将会走弯路的。

            因此,结合我最近学习jboss3.0.4的经验,根据实际应用情况,总结出jboss3.0.4配置及使用初步文档,供大家参考和讨论。

      
      
       
       
       

       
      

      前提
            首先,你必须安装了JDK,版本为1.3以上,我使用的是1.4版本。并在CLASSPATH中设置java_HOME环境变量为JDK安装目录。确保在你的机器上可以运行JAVA程序。

    安装及运行jboss3.0.4
            在jboss自己的网站http://www.jboss.org下载jboss3.0.4,有jboss-3.0.4.zip和jboss-3.0.4_tomcat-4.1.12.zip。后者是jboss和tomcat整合到一起的版本,这里主要介绍前者,既单独的jboss3.0.4。     jboss的运行很简单。将jboss-3.0.4.zip解压到本地硬盘的一个目录中。会有以下几个目录生成:
    bin
    放置jboss启动和停止的可执行脚本文件
    docs
    放置jboss的例子、测试脚本和各种脚本配置文件的DTD
    lib
    放置jboss所需要的部分jar包文件
    client
    放置EJB客户端运行时所需要的jar包
    server
    放置各启动类型的服务器端EJB配置所需要的文件等。

          Jboss3.0.4有三种启动类型,分别为all, default, minimal。如在windows平台下启动jboss,可直接启动bin目录下的run.bat既可。此时默认为以default形式启动,如需其它启动方式,则需要参数设置,如想以all模式启动,则运行run.bat �c all命令。至于三种启动模式的区别,无非就是启动的服务多少不同,具体请参照JBoss.3.0QuickStart.Draft3.pdf文档。该文档也有设置jboss启动为windows服务的一段,也可以参照,不过我按照它的做法尝试了一下,发现居然jboss的服务会占据90%以上的CPU资源(当时我用的是赛扬233,脸红中……)。
           正如大家所看到的,jboss启动就这么简单,而且也不需要按照自己的机器额外进行其他配置。到这一步,大家都很爽吧。OK,让我们继续

    查看JBOSS端口
          这本来不应单独成为一章,但是,网上各资料和JBoss.3.0QuickStart.Draft3.pdf 中都在这一部分对使用者进行了误导,我想在这里我有必要进行澄清。
          启动jboss后,我们可以查看8080端口,在浏览器地址栏中键入http://localhost:8080,我们会发现一个错误页面,内容为“HTTP ERROR: 404 / Not Found  RequestURI=/”这是正常的,因为你根本就没有页面可以显示。

    在按照网上资料和JBoss.3.0QuickStart.Draft3.pdf的要求查看8082端口时,我们就会发现,根本和资料中讲述不一致了。JBoss.3.0QuickStart.Draft3.pdf中的原文是这样的:“To check if JBoss is running please open a browser and enter http://localhost:8082 which will list all JBoss components running.”但是,我们将会出现一个错误页面!并不是象它所说的会列出所有运行的JBOSS组件。经过查找,发现其实应该是http://localhost:8080/jmx-console 。此点一定注意,否则会打击初学者学习jboss的兴趣的。我们通过这个页面进行对JBOSS的各服务的配置和管理。

    我们再查看http://localhost:8083 会出现一个没有错误的空白页,正常,应该是这样。
    我们再查看http://localhost:1099 会出现一大堆乱字符,当然,里面包含了你的IP地址等等类似的信息。1099是jnp协议监听名字服务的缺省端口,RMI的缺省端口也是一样的。在JNDI中,我们需要用到此端口。
    OK,基本端口信息就这些。

    EJB文件的编写
            EJB的结构不是我们讨论的内容,下面只是列出它的程序代码,是一个无状态的sessionBean。在这里我用的是ejb2.1的JAR。

    Remote接口文件:Example.java
    package examples;
    import javax.ejb.EJBObject;
    public interface Example extends EJBObject {
            public String example() throws java.rmi.RemoteException;
    }

    Home接口文件:ExampleHome.java
    package examples;
    import javax.ejb.EJBHome;
    public interface ExampleHome extends EJBHome {
            Example create() throws java.rmi.RemoteException,javax.ejb.CreateException;
    }

    Local接口文件:ExampleLocal.java
    package examples;
    import javax.ejb.EJBLocalObject;
    public interface ExampleLocal extends EJBLocalObject {
            public String example();
    }

    LocalHome接口文件:ExampleLocalHome.java
    package examples;
    import javax.ejb.EJBLocalHome;
    public interface ExampleLocalHome extends EJBLocalHome {
            ExampleLocal create() throws javax.ejb.CreateException;
    }

    Bean文件:ExampleBean.java
    package examples;
    import java.rmi.RemoteException;
    import javax.ejb.EJBException;
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
    public class ExampleBean implements SessionBean {

            public ExampleBean() {
                  super();
            }

            public void setSessionContext(SessionContext arg0)
                   throws EJBException, RemoteException {
                         System.out.println("setSessionContext");
            }

            public void ejbCreate()
            {
                   System.out.println("ejbCreate");
            }

            public void ejbRemove() throws EJBException, RemoteException {
                  System.out.println("ejbRemove");
            }

            public void ejbActivate() throws EJBException, RemoteException {
                   System.out.println("ejbActivate");
            }

            public void ejbPassivate() throws EJBException, RemoteException {
                   System.out.println("ejbPassivate");
            }

            public String example()
            {
                  System.out.println("example()");
                  return "Just a simple example!";
            }
    }

    客户端调用程序文件:ExampleClient.java
    package examples;
    import javax.naming.*;
    import javax.rmi.PortableRemoteObject;
    import java.util.Properties;
    public class ExampleClient {
            public ExampleClient() {
                   super();
            }

            public static void main(String[] args){
                   try{
                  Properties props =new Properties();
                   props.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
                   props.put(Context.PROVIDER_URL,"172.16.1.4:1099");
                   Context ctx = new InitialContext(props);
                   System.out.println("start ejb client test");
                   Object obj=ctx.lookup("Example");
                   ExampleHome home = (ExampleHome)PortableRemoteObject.narrow(obj,ExampleHome.class);
                   Example example = home.create();
                   System.out.println(example.example());
                   example.remove();
                   }catch(Exception e)
                  {
                         e.printStackTrace();
                  }
            }
    }

    EJB打包
            我们需要将以上文件编译的CLASS文件打成一个JAR包,部署到JBOSS中,才能调用ExampleClient执行测试。此jar包可以是任何名字,这里把它命名为myfirst.jar。

            按照以上文件的包路径,在正常编译后会形成一examples目录,下面存放各class文件。在和examples同级目录中,还需建立一META-INF目录,里面将放置部署EJB所需要的各种配置文件。

            在META-INF下,我们需要有两个文件ejb-jar.xml和jboss-service.xml。ejb-jar.xml文件里将包括EJB的各种关键信息,而jboss-service.xml则包括EJB部署在JNDI上的一些关键信息。一般网上资料介绍中只会介绍ejb-jar.xml文件,但对于JNDI部署就几乎没有,有的也是从jboss2.4.4那边继承过来的,名称为jboss.xml,但是在jboss3.0.4中,它不会承认这个名字的,只认得jboss-service.xml。

            ejb-jar.xml文件内容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar>
            <description>Your first EJB application </description>
            <display-name>JUST A TEST</display-name>
            <enterprise-beans>
                   <session>
                          <ejb-name>Example</ejb-name>
                          <home>examples.ExampleHome</home>
                          <remote>examples.Example</remote>
                          <local-home>examples.ExampleLocalHome</local-home>
                          <local>examples.ExampleLocal</local>
                          <ejb-class>examples.ExampleBean</ejb-class>
                          <session-type>Stateless</session-type>
                          <transaction-type>Container</transaction-type>

                   </session>
            </enterprise-beans>
    </ejb-jar>

    里面列出了EJB的名称以及各接口和BEAN的类路径和类名。
    Jboss-service.xml内容如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <jboss>
           <enterprise-beans>
                   <session>
                          <ejb-name>Example</ejb-name>
                         <jndi-name>Example</jndi-name>
                   </session>
                   <secure>true</secure>
            </enterprise-beans>
            <resource-managers/>
    </jboss>

    里面列出了EJB的名字和JNDI中该EJB的位置名称,这对于多个EJB的部署十分重要的。
    有了这些目录和文件,就可以将其打包了。在examples和META-INF同级目录中,运行命令:

    jar cvf myfirst.jar examples/*.class META-INF/*.xml

    执行完毕,我们就有了一个myfirst.jar包,里面包括了目录examples和META-INF以及在相应目录下的class和xml文件。
    至此,我们已经形成了一个可以在不同EJB容器下执行的EJB JAR包了,下面要讲述的是在jboss3.0.4中如何具体部署我们的myfirst.jar。
    EJB在jboss3.0.4中的部署
            只要写好了ejb-jar.xml和jboss-service.xml,在jboss3.0.4中部署EJB是很简单的了。
            不同的启动jboss模式,就将该jar文件放入对应的目录中。例如:我们用run &#65533;c all命令p动,则就将myfirst.jar放入server目录下的alldeploy目录下,则此时,运行中的JBOSS会自动识别并根据jar中的META-INF*.xml自动部署它。
            则EJB的部署就完成了。
    EJB的运行
            我们运行ExampleClient来检验我们EJB程序。
            在编译ExampleClient.java时, CLASSPATH需要引入jboss目录client下的jar文件,才能编译成功并正常运行。
            运行ExampleClient,在客户端会出现:

         start ejb client test
         Just a simple example!
    而在服务端,则会出现类似如下语句:
    13:35:31,250 INFO  [STDOUT] setSessionContext
    13:35:31,250 INFO  [STDOUT] ejbCreate

    13:35:31,250 INFO  [STDOUT] example()
    证明我们的EJB在jboss3.0.4下成功运行!!  

      
      
       
       

         
       

         
       
      


                            function TempSave(ElementID)
                            {
                                    CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
                                    CommentsPersistDiv.save("CommentXMLStore");
                            }
                            function Restore(ElementID)
                            {
                                    CommentsPersistDiv.load("CommentXMLStore");
                                    document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
                            }
                   
                      











    源码下载:http://file.javaxxz.com/2014/10/1/080417141.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-4 20:51 , Processed in 0.436993 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表