zoukankan      html  css  js  c++  java
  • 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.Finalstandalonedeployments这个目录下, 要不然这个实例起不来

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

  • 相关阅读:
    c++中多态性、dynamic_cast、父类指针、父类对象、子类指针、子类对象
    Makefile写法
    verilog 随笔
    VHDL设计时参数定义的方法 例子
    Linux ln命令
    linux下使用tar命令
    Linux find命令详解
    图解红外遥控的发射和接收原理
    实战 SSH 端口转发
    数字签名是什么?
  • 原文地址:https://www.cnblogs.com/xumBlog/p/12002187.html
Copyright © 2011-2022 走看看