WildFly的學習


1. WildFly介紹:

WildFly,前身是JBoss AS,從V8開始為區別於JBoss EAP,更名為WildFly. 由紅帽 (Red Hat)開發,是另一個功能齊全且經過認證的應用服務器.

Wildfly是一個開源的基於JavaEE的輕量級應用服務器。可以在任何商業應用中免費使用。

WildFly是一個靈活的、輕量的、強大管理能力的應用程序服務器。Wildfly是一個管理EJB的容器和服務器,但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。

特點

  • 無與倫比的速度:快速啟動,無限的網絡性能和可擴展性。
  • 非常的輕量級:瘦內存管理,運行時間可定制化。
  • 強大的管理功能:統一的配置和管理。

下載安裝

    wildfly下載地址:https://wildfly.org/downloads/

    目前,最新版本是18.0.1.Final,選擇“Java EE Full & Web Distribution”項對應的ZIP版本,點擊下載即可。

      安裝java環境要求Java8或更高版本。下載好后, 直接解壓, 放到一個目錄下,

standalone目錄下存放的應用將單獨占用進程,可單獨啟動和關閉,之間沒有關聯性。旗下有許多xml文件可供啟動時選擇。

domain目錄下的應用之間有關聯性,managing multiple servers from a single control point。

modules目錄,jboss采用module加載驅動。

      image

啟動

   首先配置WildFly到系統變量和path里, 這里是方便之后的操作

   imageimage

  現在啟動wildFly, 打開cmd, 直接輸入standalone

  image

  或則到bin目錄下找到standalone這個bat腳本,運行它,也可以

  image

  運行成功輸出如下:

  image

  最后在瀏覽器輸入 http://localhost:8080, 結果如下圖,說明運行成功。 

  image

2. Eclipse配置WildFly

2.1 下載wildFly

   直接在Eclipse Marketplace搜索jboss, 然后選擇下載JBoss Tools 4.5.3.Final

   image

2.2 運用WildFly

參考文:  https://blog.csdn.net/qq_17058993/article/details/83027234 

先看下最后搭建的目錄,

  第一個是要部署的項目, 類似於服務環境(server)

  第二個是客戶端, 調用第一個項目的實例(client)

image

  1.  搭建第一個實例

     File->new->project->EJB->EJB project,  創建一個EJB的項目,

     最后要勾上Generate ejb-jar.xml這個選項

      image

   要引入Jboss EJB3 library

    點擊項目HelloWidFly右鍵->properties, 配置Library, 最后對HelloWildFly重新build一次就可以了.

    image

       HelloWidfly.java文件內容如下:

package com.xum.demo;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;

/**
 * Session Bean implementation class HelloWidfly
 */
@Stateless
@LocalBean
public class HelloWildfly implements HelloWildflyRemote {

    /**
     * Default constructor. 
     */
    public HelloWildfly() {
       // empty constructor
    }

    @Override
    public String hello(String s) {
        return "hello," + s + " wildFly remote";
    }

}

HelloWildflyRemote.java的內容:

package com.xum.demo;

import javax.ejb.Remote;

@Remote
public interface HelloWildflyRemote {

    public String hello(String s);
    
}

  2.  搭建第二個實例

  創建一個Java的project, 不再是EJB的prokect,而是java的project

  同時要配置library, jboss-cli-client和jboss-client兩個jar文件

   image

HelloWildFlyClient.java文件里的內容:

package com.xum.demo;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class HelloWildFlyClient {
   
    // https://blog.csdn.net/qq_17058993/article/details/83027234
        
    public static void main(String[] args) {
        
        Properties props = new Properties();
        
        props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");  
        props.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
        props.put("jboss.naming.client.ejb.context", true);
             
        InitialContext context;
        try {
            context = new InitialContext(props);
            //For stateless beans:
            //ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
            //For stateful beans:
            //ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
            //JNDI路徑 查看控制台輸出文件 @remote 注解的
            String fullEJBName = "HelloWildFly/HelloWildfly!com.xum.demo.HelloWildflyRemote";
            HelloWildflyRemote helloWorld;
            helloWorld = (HelloWildflyRemote) context.lookup(fullEJBName);
            System.out.println(helloWorld.hello("xum"));
        } catch (NamingException e1) {
            e1.printStackTrace();
        }
        
    }

}

HelloWildflyRemote.java文件里的內容:

package com.xum.demo;

import javax.ejb.Remote;

@Remote
public interface HelloWildflyRemote {

    public String hello(String s);
    
}


到目前為止, 兩個實例搭建成功, 現在運行起來, 如下步驟:

1.  先運行第一個實例, HelloWildFly項目右鍵 –> Export –> Export EJB file

  一定要導入到wildfly-18.0.1.Final\standalone\deployments這個目錄下, 要不然這個實例起不來

image

導入成功后,運行這個實例,通過之前的standalone或則standalone.bat腳本運行起來

運行成功,會看到有如下類似的信息, 這個對客戶端調用非常重要.

java:global/HelloWildFly/HelloWildfly!com.xum.demo.HelloWildflyRemote
java:app/HelloWildFly/HelloWildfly!com.xum.demo.HelloWildflyRemote
java:module/HelloWildfly!com.xum.demo.HelloWildflyRemote
java:jboss/exported/HelloWildFly/HelloWildfly!com.xum.demo.HelloWildflyRemote
ejb:/HelloWildFly/HelloWildfly!com.xum.demo.HelloWildflyRemote
java:global/HelloWildFly/HelloWildfly!com.xum.demo.HelloWildfly
java:app/HelloWildFly/HelloWildfly!com.xum.demo.HelloWildfly
java:module/HelloWildfly!com.xum.demo.HelloWildfly
ejb:/HelloWildFly/HelloWildfly!com.xum.demo.HelloWildfly


2.  最后運行第二個實例, 就是java project, Ctrl + F11,運行內容如下:

十二月 07, 2019 4:17:41 下午 org.jboss.naming.remote.client.InitialContextFactory <clinit>
INFO: WFNAM00025: org.jboss.naming.remote.client.InitialContextFactory is deprecated; new applications should use org.wildfly.naming.client.WildFlyInitialContextFactory instead
十二月 07, 2019 4:17:41 下午 org.wildfly.naming.client.Version <clinit>
INFO: WildFly Naming version 1.0.11.Final
十二月 07, 2019 4:17:41 下午 org.wildfly.security.Version <clinit>
INFO: ELY00001: WildFly Elytron version 1.10.4.Final
十二月 07, 2019 4:17:41 下午 org.xnio.Xnio <clinit>
INFO: XNIO version 3.7.3.Final
十二月 07, 2019 4:17:41 下午 org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.7.3.Final
十二月 07, 2019 4:17:43 下午 org.jboss.threads.Version <clinit>
INFO: JBoss Threads version 2.3.3.Final
十二月 07, 2019 4:17:43 下午 org.jboss.ejb.client.legacy.RemotingLegacyConfiguration getConfiguredEndpoint
INFO: EJBCLIENT000070: Using legacy jboss-ejb-client.properties Remoting configuration
十二月 07, 2019 4:17:43 下午 org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 5.0.15.Final
十二月 07, 2019 4:17:43 下午 org.jboss.ejb.client.legacy.ElytronLegacyConfiguration getConfiguredAuthenticationContext
INFO: EJBCLIENT000069: Using legacy jboss-ejb-client.properties security configuration
十二月 07, 2019 4:17:46 下午 org.jboss.ejb.client.legacy.LegacyPropertiesConfiguration configure
INFO: EJBCLIENT000072: Using legacy jboss-ejb-client.properties EJB client configuration
hello,xum wildFly remote

最后一行就是程序調用第一個實例打印出來的結果.

至此,WildFly運行成功,並調用成功.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM