JBOSS3.0.4配置及使用初步

原创 专栏收录该内容
10 篇文章 0 订阅

JBOSS3.0.4配置及使用初步

2003年2月28日星期五

前言

       JBOSS推出3.0.4版本其实已经很久很久啦,可是呢,网上关于它的介绍就少得可怜,而且仅有的几篇介绍都并不完全正确,很多甚至是直接拷贝jboss2.4.4的相关内容。那些抄袭者没有想到,从jboss2.4.4jboss3.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.zipjboss-3.0.4_tomcat-4.1.12.zip。后者是jbosstomcat整合到一起的版本,这里主要介绍前者,既单独的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地址等等类似的信息。1099jnp协议监听名字服务的缺省端口,RMI的缺省端口也是一样的。在JNDI中,我们需要用到此端口。

OK,基本端口信息就这些。

EJB文件的编写

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

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.xmljboss-service.xmlejb-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的部署十分重要的。

有了这些目录和文件,就可以将其打包了。在examplesMETA-INF同级目录中,运行命令:

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

执行完毕,我们就有了一个myfirst.jar包,里面包括了目录examplesMETA-INF以及在相应目录下的classxml文件。

至此,我们已经形成了一个可以在不同EJB容器下执行的EJB JAR包了,下面要讲述的是在jboss3.0.4中如何具体部署我们的myfirst.jar

EJBjboss3.0.4中的部署

       只要写好了ejb-jar.xmljboss-service.xml,在jboss3.0.4中部署EJB是很简单的了。

       不同的启动jboss模式,就将该jar文件放入对应的目录中。例如:我们用run –c all命令启动,则就将myfirst.jar放入server目录下的all/deploy目录下,则此时,运行中的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()

 

证明我们的EJBjboss3.0.4下成功运行!!

 

 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p> <span style="font-size:14px;color:#337FE5;">【为什么学爬虫?】</span> </p> <p> <span style="font-size:14px;">       1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!</span> </p> <p> <span style="font-size:14px;">       2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站</span> </p> <p> <br /> </p> <span style="font-size:14px;color:#337FE5;">【课程设计】</span> <p class="ql-long-10663260"> <span> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 网络请求:模拟浏览器的行为从网上抓取数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 </li> <li class="" style="font-size:11pt;color:#494949;"> Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 </p> <p style="font-size:11pt;color:#494949;">   </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <br /> </p> <p> <br /> </p> <p> <span style="font-size:14px;background-color:#FFFFFF;color:#337FE5;">【课程服务】</span> </p> <p> <span style="font-size:14px;">专属付费社群+定期答疑</span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"><br /> </span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"></span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值