WildFly的学习

好久不见. 提交于 2019-12-07 16:28:32

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运行成功,并调用成功.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!