<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Topquan's Blog

    分享價(jià)值----成就你我----我的博客----你的家

    JBOSS熱身:Windows環(huán)境下的JBOSS開發(fā)

    最近要做一個(gè)在jboss下的項(xiàng)目,jboss版本為jboss-4.0.5.GA。
    因?yàn)橐郧皼]有使用過jboss,為了更好的了解它,就從網(wǎng)上找了一個(gè)小例子,很經(jīng)典的HelloWorld.
     
    一、安裝所需軟件
    1、 安裝 SDK 到 D:\Program Files\Java\jdk1.5.0_07;方法為:雙擊執(zhí)行下載的 jdk文件,選擇安裝目錄為 D:\Program Files\Java\jdk1.5.0_07,其它默認(rèn)即可。
    2、 安裝 JBOSS ;方法為:將下載的 jboss-4.0.5.GA.zip文件解壓到任意一個(gè)目錄,解壓后會(huì)在此目錄中產(chǎn)生一個(gè) jboss-4.0.5.GA文件夾,在此文件夾下有一系列的文件和文件夾。然后在 C 盤根目錄下建一個(gè) JBOSS 目錄,并將剛才解壓后 jboss-4.0.5.GA文件夾下的一系列文件和文件夾全都拷貝到 C : \JBOSS 目錄下。即將 JBOSS 安裝到了 C:\JBOSS 目錄中。
     
    二、配置運(yùn)行環(huán)境及測(cè)試程序目錄
    一、設(shè)置環(huán)境變量
    1、 設(shè)置 JAVA_HOME 系統(tǒng)變量:在 windows 下方法為,在桌面上右鍵點(diǎn)擊“我的電腦”,選擇屬性,然后在彈出的頁面上點(diǎn)“高級(jí)” -> “環(huán)境變量”,然后在彈出的頁面中“系統(tǒng)變量”下點(diǎn)擊“新建”,然后在彈出的窗口中“變量名 (N) 輸入“ JAVA_HOME ”,在“變量值 (V) ”一欄中輸入“D:\Program Files\Java\jdk1.5.0_07”。
    2、 以同樣的方法設(shè)置: JBOSS_HOME 值為: C:\JBOSS
    3、 以同樣的方法在上面地方將 Path 的值后追加:以下內(nèi)容:“ D:\Program Files\Java\jdk1.5.0_07;C:\JBOSS\bin ”
    二、創(chuàng)建程序目錄
    1、 在 C:\JBOSS 下新建一個(gè) myproject 目錄,用于存放自己的所有項(xiàng)目。
    2、 在 myproject 目錄下新建三個(gè)目錄:一個(gè)是 jsp 目錄,其下用于存放所有的 jsp 文件和 servlet 文件及其它的 html , image 文件等;一個(gè)是 ejb 目錄,用于存放所有即將發(fā)布的 EJB 類文件;一個(gè)是 src 目錄,用于存放所有的 java 源文件。
    3、 在 jsp 目錄下新建一個(gè)目錄,并命名為: hello.war ,用來發(fā)布 WEB 程序,然后再在此目錄下新建一系列文件夾:即在 hello.war 下新建 WEB-INF (大寫)文件夾,再在 WEB-INF 下新建 classes 文件夾,再在 classes 文件夾下新建一個(gè) hello 文件夾。
    4、 在 ejb 目錄下新建一個(gè) client 目錄和一個(gè) hello.jar 目錄,分別用于存放 EJB 客戶端和要發(fā)布的服務(wù)器端類。然后再在 client 目錄下新建一個(gè) hello 目錄,再在此目錄下新建一個(gè) ejb 目錄。然后在 hello.jar 目錄下新建一個(gè) hello 目錄和一個(gè) META-INF( 大寫 ) 目錄,并在 hello 目錄中新建一個(gè) ejb 目錄。
     
     
    三、編寫測(cè)試程序及相關(guān)腳本
    一、 測(cè)試 JBOSS 安裝成功與否
    方法如下:進(jìn)入 C : \JBOSS 目錄中,執(zhí)行 run.bat –c all 啟動(dòng)具有全部功能的 JBOSS 配置服務(wù)器。屏幕經(jīng)過一會(huì)滾動(dòng)后不再滾動(dòng)。這時(shí)啟動(dòng) IE 輸入: http://localhost:8080/jmx-console/index.jsp 即可看到 IE 中出現(xiàn)一系列列表,即表明 JBOSS 啟動(dòng)成功。此時(shí)可在啟動(dòng) JBOSS 的 DOS 窗口上按 Ctrl+C 關(guān)閉 JBOSS 服務(wù)器。
    二、 進(jìn)入 C:\JBOSS\myproject\jsp\hello.war 目錄中,用記事本新建一個(gè) index.jsp 文件,內(nèi)容如下
    用于測(cè)試 jsp 程序
    <%@page contentType="text/html; charset=gb2312"%>
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body bgcolor="#FFFFFF" text="#000000" topmargin="5">
    <%
    String hello = "Hello world!this created by jsp file!";
    out.println(hello);
    %>
    </body>
    </html>
    三、 進(jìn)入 C:\JBOSS\myproject\src 目錄,新建一個(gè) HelloWorld.java ,是一個(gè) Servlet 類,內(nèi)容如下
    package 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");
    PrintWriter out = response.getWriter();
    out.println("<hr>");
    out.println("Hello World! This is created by Servlet!");
    out.println("<hr>");
    }
    }
    到此,我們就建立好了用于測(cè)試的 JSP 文件和 Servlet 類,下面將建 HelloWorld 的無狀態(tài) SessionBean 。
    四、 進(jìn)入 C:\JBOSS\myproject\src 目錄,新建一個(gè) Hello.java 文件,以實(shí)現(xiàn) EJB 的 Remote 接口,內(nèi)容如下,
    package hello.ejb;
    /**
    * Remote interface for Enterprise Bean: Hello
    * Remote 接口
    */
    public interface Hello extends javax.ejb.EJBObject {
    /**
    * 唯一的方法 hello ,向客戶端返回問候。
    */
    public String hello() throws java.rmi.RemoteException;
    }
    同樣在此目錄中新建一個(gè) HelloLocal.java 文件,實(shí)現(xiàn) Local 接口,內(nèi)容如下:
    package hello.ejb;
    import javax.ejb.EJBLocalObject;
    public interface HelloLocal extends EJBLocalObject {
    public String hello();
    }
    同樣在此目錄中新建一個(gè) HelloHome.java 文件,實(shí)現(xiàn) Home 接口,內(nèi)容如下:
    package hello.ejb;
    /**
    * Home interface for Enterprise Bean: Hello
    * Home 接口
    */
    public interface HelloHome extends javax.ejb.EJBHome{
    /**
    * Creates a default instance of Session Bean: Hello
    */
    public Hello create() throws javax.ejb.CreateException, java.rmi.RemoteException;
    }
    同樣在此目錄中新建一個(gè) HelloLocalHome.java 文件,實(shí)現(xiàn) LocalHome 接口,內(nèi)容如下:
    package hello.ejb;
    import javax.ejb.EJBLocalHome;
    public interface HelloLocalHome extends EJBLocalHome {
    HelloLocal create() throws javax.ejb.CreateException;
    }
    同樣在此目錄中新建一個(gè) HelloBean.java ,實(shí)現(xiàn) EJB 類,內(nèi) [ 容如下:
    package hello.ejb;
    /**
    * Bean implementation class for Enterprise Bean: Hello
    */
    public class HelloBean 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 void ejbActivate(){
    }
    /**
    * ejbCreate
    */
    public void ejbCreate() throws javax.ejb.CreateException{
    }
    /**
    * ejbPassivate
    */
    public void ejbPassivate(){
    }
    /**
    * ejbRemove
    */
    public void ejbRemove(){
    }
    /**
    * 商務(wù)方法
    */
    public String hello(){
    return "Hello,World! this is created by EJB!";
    }
    }
    至此,我們己經(jīng)將 EJB 類所需的所有的所有類編寫好了,下面我們編寫用于測(cè)試此 EJB 程序的文件,具體來說有兩個(gè):一個(gè)是用客戶端 Servlet 來調(diào)用 EJB ,另一個(gè)是用客戶端類來調(diào)用 EJB 。實(shí)現(xiàn)如下:
    五、 實(shí)現(xiàn)測(cè)試 EJB 的程序
    進(jìn)入 C:\JBOSS\myproject\src 目錄中,新建一個(gè) HelloServlet.java 文件,用于測(cè)試通過 Servlet 調(diào)用 EJB 。內(nèi)容如下:
    package hello;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import javax.ejb.*;
    import javax.naming.InitialContext;
    import javax.naming.Context;
    import hello.ejb.*;
    import java.util.*;
    public class HelloServlet extends HttpServlet
    {
    private HelloHome home;
    public void init() throws ServletException
    {
    try
    {
    String initCtxFactory = getInitParameter(Context.INITIAL_CONTEXT_FACTORY);
    String providerURL = getInitParameter(Context.PROVIDER_URL);
    Properties env = new Properties();
    if(initCtxFactory!=null)
    {
    env.put(Context.INITIAL_CONTEXT_FACTORY,initCtxFactory);
    }
    if(providerURL!=null)
    {
    env.put(Context.PROVIDER_URL,providerURL);
    }
    Context ctx=new InitialContext(env);
    Object objRef = ctx.lookup("Hello");
    // 主接口
    home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(objRef,hello.ejb.HelloHome.class);
    }catch(javax.naming.NamingException ne){
    System.out.println("Create Exception caught:"+ne);
    throw new ServletException(ne.toString());
    }catch(Exception e)
    {
    throw new ServletException(e.toString());
    }
    }
    public void service(HttpServletRequest req,HttpServletResponse res) throws IOException
    {
    res.setContentType("text/html");
    PrintWriter out =res.getWriter();
    out.println("<html><head><title>the first EJB</title></head>");
    try{
    // 組件接口
    Hello bean=home.create();
    out.println(bean.hello());
    }catch(javax.ejb.CreateException ce){
    out.println("Create Exception caught:"+ce);
    ce.printStackTrace(out);
    }catch(java.rmi.RemoteException re){
    out.println("Remote Exception caught:"+re);
    re.printStackTrace(out);
    }
    out.println("</body></html>");
    }
    }
    同樣在此目錄中,新建一個(gè) HelloClient.java 文件,用于通過客戶端類測(cè)試 EJB ,內(nèi)容如下:
    package hello.ejb;
    import java.util.*;
    import java.io.*;
    import javax.naming.InitialContext;
    import javax.rmi.PortableRemoteObject;
    import javax.naming.Context;
    import javax.rmi.PortableRemoteObject;
    import hello.ejb.*;
    public class HelloClient
    {
    public static void main(String[] args)
    {
    try
    {
    //jndi 配置 , 應(yīng)實(shí)現(xiàn)為外部屬性文件
    Properties env = new Properties();
    //config.properties 文件應(yīng)該放在和 hello 包目錄所在目錄的同級(jí)目錄中。即它和 hello 文件夾同在一個(gè)文件夾中。
    env.load(new FileInputStream("config.properties"));
    // Get a naming context
    System.out.println(env);
    InitialContext ctx = new javax.naming.InitialContext(env);
    System.out.println("Got context");
    // Get a reference to the Interest Bean
    //jboss 默認(rèn) jndi 名為 ejb-jar.xml 中的 :ejb-name
    Object ref = ctx.lookup("Hello");
    System.out.println("Got reference");
    // Get a reference from this to the Bean"s Home interface
    HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref, HelloHome.class);
    // Create 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());
    }
    }
    }
    然后,我們還需增加一個(gè)此客戶端程序運(yùn)行時(shí)所需的 JNDI 配置文件。方法如下:
    進(jìn)入 : C:\JBOSS\myproject\ejb\client 目錄,用記事本新建一個(gè) config.properties 文件,內(nèi)容如下三行:
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=jnp://localhost:1099
    六、 編寫服務(wù)器端的配置文件,
    首先進(jìn)入 C:\JBOSS\myproject\jsp\hello.war\WEB-INF 目錄,用記事本創(chuàng)建一個(gè) web.xml 文件,用于配置 servlet ,內(nèi)容如下:
    <?xml version="1.0" encoding="gb2312"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <servlet>
    <servlet-name>HelloWorld</servlet-name>
    <display-name>HelloWorld</display-name>
    <servlet-class>hello.HelloWorld</servlet-class>
    </servlet>
    <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <display-name>HelloServlet</display-name>
    <servlet-class>hello.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>HelloWorld</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
    </web-app>
    然后進(jìn)入 C:\JBOSS\myproject\ejb\hello.jar\META-INF 目錄,創(chuàng)建一個(gè) ejb-jar.xml 文件,內(nèi)容如下:
    <?xml version="1.0" encoding="gb2312"?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
    "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar>
    <description>This is Hello EJB example</description>
    <display-name>helloeEJB</display-name>
    <enterprise-beans>
    <session>
    <display-name>Hello</display-name>
    <ejb-name>Hello</ejb-name>
    <home>hello.ejb.HelloHome</home>
    <remote>hello.ejb.Hello</remote>
    <local-home>hello.ejb.HelloLocalHome</local-home>
    <local>hello.ejb.HelloLocal</local>
    <ejb-class>hello.ejb.HelloBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    </ejb-jar>
    在此目錄中,再建一個(gè) jboss-service.xml 文件,內(nèi)容如下:
    <?xml version="1.0" encoding="gb2312"?>
    <jboss>
    <enterprise-beans>
    <session>
    <ejb-name>Hello</ejb-name>
    <jndi-name>Hello</jndi-name>
    </session>
    <secure>true</secure>
    </enterprise-beans>
    <reource-managers/>
    </jboss>
    七、 到此為止,我們將所有的測(cè)試文件和配置文件己編寫完成。
    八、 下面我們編寫編譯這些類文件的腳本程序
    進(jìn)入 C:\JBOSS\BIN 目錄下,新建一個(gè) com.bat 文件,內(nèi)容如下:
    set classpath=.;c:\j2sdk1.4.2_06\lib\tools.jar;C:\JBOSS\client\jbossall-client.jar;C:\JBOSS\client\jboss-client.jar;C:\JBOSS\client\jboss-iiop-client.jar;C:\JBOSS\server\default\lib\jnpserver.jar;C:\JBOSS\client\jnp-client.jar;C:\JBOSS\client\log4j.jar;C:\JBOSS\client\jboss-j2ee.jar; C:\JBOSS\server\all\lib\javax.servlet.jar
    javac %1
    同樣在此目錄新建一個(gè) runclient.bat ,用于運(yùn)行客戶端程序,內(nèi)容如下:
    set classpath=.;c:\j2sdk1.4.2_06\lib\tools.jar;C:\JBOSS\client\jbossall-client.jar;C:\JBOSS\client\jboss-client.jar;C:\JBOSS\client\jboss-iiop-client.jar;C:\JBOSS\server\default\lib\jnpserver.jar;C:\JBOSS\client\jnp-client.jar;C:\JBOSS\client\log4j.jar;C:\JBOSS\client\jboss-j2ee.jar; C:\JBOSS\server\all\lib\javax.servlet.jar
    java %1
     
    四、編譯和運(yùn)行測(cè)試程序
    1、 進(jìn)入 C:\JBOSS\myproject\src 目錄中,運(yùn)行 :
    com *.java
    將產(chǎn)生一系列 .class 文件。
    2、 將產(chǎn)生的 HelloWorld.class 和 HelloServlet.class 拷貝到 C:\JBOSS\myproject\jsp\hello.war\WEB-INF\classes\hello 目錄中。
    3、 將產(chǎn)生的 HelloHome.class 和 HelloClient.class 和 Hello.class 文件放入 C:\JBOSS\myproject\ejb\client\hello\ejb 目錄中
    4、 將產(chǎn)生的 Hello.class 和 HelloBean.class 和 HelloHome.class 和 HelloLocal.class 和 HelloLocalHome.class 放入 C:\JBOSS\myproject\ejb\hello.jar\hello\ejb 目錄中。
    至此,我們己經(jīng)完成了所有類的編譯,并將它們放入到適當(dāng)?shù)牡胤剑壳盀橹梗募湍夸浄植冀Y(jié)構(gòu)如下圖所示:
    這時(shí),我們將 myproject 下 ejb 目錄中的 hello.jar 目錄和 jsp 下的 hello.war 目錄拷貝到
    C:\JBOSS\server\all\deploy 下。
    這時(shí)啟動(dòng) JBOSS 的工作臺(tái)自動(dòng)會(huì)發(fā)布此兩個(gè)目錄。我們便可以測(cè)試了。
    啟動(dòng) JBOSS :
    run.bat –c all
    用 IE 打開 http://localhost:8080/hello/index.jsp 測(cè)試 JSP 文件
    用 IE 打開 http://localhost:8080/hello/HelloWorld 測(cè)試 Serlvet
    用 IE 打開 http://localhost:8080/hello/HelloServlet 測(cè)試用 Servlet 調(diào)用 EJB
    然后進(jìn)入
    C:\JBOSS\myproject\ejb\client 運(yùn)行:
    Runclient hello/ejb/HelloClient

    posted on 2006-11-20 14:51 topquan 閱讀(1522) 評(píng)論(2)  編輯  收藏 所屬分類: JBoss Server

    評(píng)論

    # re: JBOSS熱身:Windows環(huán)境下的JBOSS開發(fā) 2007-05-17 11:08 livia

    博主,你好!你安裝的jboss4.0.5.GA包。在引入javax.servlet.http包時(shí),為什么我總是提示沒有找到該包。具體情況就是在IntelliJ IDEA中運(yùn)行程序時(shí),總是提示沒有找到j(luò)avax.servlet.http包,我在jboss/server/default/下只有servler.jar.網(wǎng)上似乎有這個(gè)包的都是tomcat下的包。另外使用IntelliJ IDEA添加jar時(shí),所使用的方法是settings->application server->attach classes?不知對(duì)不對(duì)?其他的attach Javadoc?Sources?
    這種情況可以解決嗎?
      回復(fù)  更多評(píng)論   

    # re: JBOSS熱身:Windows環(huán)境下的JBOSS開發(fā) 2007-05-17 15:46 topquan

    server\default\lib\javax.servlet.jar就是的,你找不到,是因?yàn)槟銢]有正確引入,在IDE中,可以通過Configure build path來添加你想要的jar文件。  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 精品久久久久亚洲| 在线综合亚洲欧洲综合网站| 久久久久久亚洲精品无码 | 中文字幕无线码中文字幕免费| 亚洲AV无码乱码在线观看性色扶| 久久亚洲色WWW成人欧美| 浮力影院第一页小视频国产在线观看免费 | 亚洲精品无码专区在线播放| 全免费a级毛片免费看不卡| 亚洲第一成年免费网站| 男人的天堂亚洲一区二区三区 | 久久精品国产亚洲av麻豆| 国产在线精品免费aaa片| 亚洲AV无码专区国产乱码电影| 日韩精品在线免费观看| 亚洲成人福利在线| 免费黄色大片网站| 成人在线免费视频| 亚洲AV日韩精品久久久久| 1000部无遮挡拍拍拍免费视频观看 | 嫩草视频在线免费观看| 黄色网址大全免费| 亚洲va中文字幕无码久久| 99久久免费精品高清特色大片| www.亚洲成在线| 大胆亚洲人体视频| 国产免费一区二区三区在线观看| 亚洲黄色高清视频| 国产成人一区二区三区免费视频| 一级片在线免费看| 亚洲欧洲中文日产| 免费观看四虎精品国产永久| 中文字幕永久免费视频| 日韩亚洲国产综合高清| 亚洲国产成人五月综合网 | 久九九精品免费视频| 国产亚洲情侣久久精品| 亚洲成亚洲乱码一二三四区软件| 又大又硬又爽又粗又快的视频免费| 亚洲欧好州第一的日产suv| 国产亚洲美女精品久久久2020|