Jboss Module Slot

2021年1月18日
Register here: http://gg.gg/nwagy
Hi,AS 7 does classloading right. It uses JBoss Modules to provide true application isolation, hiding server implementation classes from the application and only loading the classes your application needs. Modules, packaged as collections of classes, are peers that remain isolated unless explicitly defined as a dependency of another module. Visibility rules have sensible defaults, yet can be customized.
The slot attribute is for specifying the version of the module you want to include, it defaults to main when not specified. You must know the name of the modules that are to be configured as global modules. Refer to Section 7.4.1, “Included Modules” for the list of static modules included with JBoss Enterprise Application Platform 6. If the module is in another deployment, refer to Section 7.4.2, “Dynamic Module Naming” to determine the module name. Yes, JBoss Modules has what we call a ’slot’. It is not termed ’version’ because not all java projects use the version to associate a compatibility promise with it. You can use the same slot to span multiple major versions. For projects that use an OSGi like version scheme the ’slot’ would be equivalent to the ’version’. A WildFly module (or JBoss module) is a packaged collection of classes and other resources, along with the specification of what is imported and exported by this module from/to other modules. Each API or service provided by WildFly is implemented as a module, which is loaded or unloaded on demand. The jar is located in JBOSS modules jboss ws api (jbossws-api-1.0.0.GA.jar) I’m not using maven so how do I include this dependency? Can I use the jboss-deployment-structure or Dependencies in the MANIFEST? My point is to have access to the jar in my Lib. Ideally the jar jbossws-api-1.0.0.GA.jar must be located in JBoss 7.1 Runtime Libs.
Modular classloading is one of the greatest and amazing feature of JBossAS7, but some application server admins are not much aware of this new feature. So here we are going to see a practicle demo of creating a module on JBoss AS7.1.1.Final.Few Points Which we are going to discuss here:
Point-1). How to create our own custom modules?
Point-2). What is the need of “module.xml” and where to place it?
Point-3). What is “slot” and Why and When to define “slot” in our “module.xml” file?
Point-4). How to reference a module inside our webapplication for classloading purpose?
Point-5). How and why to use the “META-INF/jboss-deployment-structure.xml” or “WEB-INF/jboss-deployment-structure.xml” file?
***NOTE*** This demo is also available in Github: https://github.com/jaysensharma/MiddlewareMagicDemos/tree/master/JBossAS7_module_slot_DemoDeveloping a Custom Module:
Step-1). Create a directory somewhere in your file system where we will develop our own custom Module with some different versions of class files. Suppose the directory is “/home/userone/CustomModuleTest”
Step-2). Now create a directories structure as “aaa/bbb/1.0” and “aa/bbb/main” inside the directory “/home/userone/CustomModuleTest”.
Step-3). Now write a class with name “Test.java” inside “/home/userone/CustomModuleTest/aaa/bbb/1.0” as following:Jboss-deployment-structure Module Slot
Step-4). Similarly write a “Test.java” program as following inside the directory “/home/userone/CustomModuleTest/aaa/bbb/main” :
***NOTE***: The class “aaa.bbb.Test” is same as mentioned in Step3 and Step4 but there is a slight different in the implementation of these classes like the Version of the class is 1.0 and 1.2 as you can see in the static block of the code. This is just to demonstrate that how we can load any version of the same class inside our application with the help of “slot” concept of JBoss Modules.
Step-5). Now we will need to write a file with name “module.xml” inside the directory “/home/userone/CustomModuleTest/aaa/bbb/1.0” as following:
Step-6). Now we will need to write another file with name “module.xml” inside the directory “/home/userone/CustomModuleTest/aaa/bbb/main” as following:
***NOTE*** If we have the same Jars of different versions defined as part of a module then the Jar which is present inside the “main” directory of the module will be utilized by default until the application uses “META-INF/jboss-deployment-structure.xml” or “WEB-INF/jboss-deployment-structure.xml” to mention which “slot” (version) it want to use.
Step-7). Now it’s turn to compile the Test.java class. So open a shell prompt and then make sure that your PATH variable is set properly to point to the JDK bin directory as following:
Step-8). In the abobe shell prompt now move inside the directory “/home/userone/CustomModuleTest/aaa/bbb/main” to compile the Test.java program and to create a Test1.2.jar file as following:
Step-9). Similarly we wiill compile the Test.java present inside the “/home/userone/CustomModuleTest/aaa/bbb/1.0”. So in the abobe shell prompt now move inside the directory “/home/userone/CustomModuleTest/aaa/bbb/1.0” to compile the Test.java program and to create a Test1.0.jar file as following:
Step-10). Now just copy and paste your custom module directory “aaa” directory placed inside the “/home/userone/CustomModuleTest” to destination directory “/home/userone/jboss-as-7.1.1.Final/modules”
Step-11). Now restart your JBossAS7 server as following:Testing the Custom Module and it’s slot:
Now we are going to develop a simple web application which will demonstrate how we can load the module, which has name “aaa.bbb” inside our application. And how to load various versions of the same class “aaa.bbb.Test” with the help of “slot” using “WEB-INF/jboss-deployment-structure.xml”Jboss Module Slot Machines
Step-12). Just create a WebApplication directory “TestCustomModule.war” somewhere in your file system like inside “/home/userone/CustomModuleTest”
Step-14). Write the following kind of simple “index.jsp” page inside our Web Application directory “/home/userone/CustomModuleTest/TestCustomModule.war”
Step-15). Create another directory “WEB-INF” as “/home/userone/CustomModuleTest/TestCustomModule.war/WEB-INF” and then palce the following kind of “web.xml” file inside it :
Step-16). Create another file with name “jboss-deployment-structure.xml” inside “/home/userone/CustomModuleTest/TestCustomModule.war/WEB-INF”, Now with the help of this file we will specify which version of the “aaa.bbb.Test ” class we want to use in our application.
Step-17). Copy and paste the “TestCustomModule.war” directory inside your JBossAS7 standalone deployment directory “/home/userone/jboss-as-7.1.1.Final/standalone/deployments”
Step-18). Now write a file with name “TestCustomModule.war.dodeploy” inside the JBoss deployment directory “/home/userone/jboss-as-7.1.1.Final/standalone/deployments” to tell JBoss AS7 to deploy our application. (NOTE: as our application is Exploaded directory so we need to create this file otherwise war/jar/ear “FILES” are automatically deployed without creating *.dodeploy file.)
Step-19). Access the application as “http://localhost:8080/TestCustomModule/index.jsp” to see if your JSP file is able to access the “aaa.bbb.Test” class or not? In the JBoss Console (command prompt output/STDOUT) you will see following kind of output. Further Testing & Verification :Jboss Module Slot Machine
Step-20). At the time of application deployment based on the version of module which you mentioned in your “jboss-deployment-structure.xml”, If your module is loaded and deployed successfully then you will see a file with name “Test1.0.jar.index” or “Test1.2.jar.index” name inside the “/home/userone/jboss-as-7.1.1.Final/modules/aaa/bbb/1.0” or “/home/userone/jboss-as-7.1.1.Final/modules/aaa/bbb/main”
Step-21). Remove the “slot=1.0” attribute in your “” file as following then redeploy your WebApplication then see access the same index.jsp page ….. you will notice that now JBoss AS7 will load the 1.2 version of aaa.bbb.Text class as this is the default version.Jboss Module Slots
Folllowing kind of output your will see now after redeployment of your application :
Notice that this time a 1.2 version of aaa.bbb.Test class is loaded by JBoss.Jboss Module Sloth
..Thanks

コメント

最新の日記 一覧

<<  2025年7月  >>
293012345
6789101112
13141516171819
20212223242526
272829303112

お気に入り日記の更新

テーマ別日記一覧

まだテーマがありません

この日記について

日記内を検索