diff --git a/appserver/admingui/hello-world/README.md b/appserver/admingui/hello-world/README.md
new file mode 100644
index 00000000000..bd8d56156e6
--- /dev/null
+++ b/appserver/admingui/hello-world/README.md
@@ -0,0 +1,29 @@
+# Hello World Admin Console Plugin
+
+This is an example plugin that demonstrates how to create Jakarta Faces (JSF) pages in the GlassFish Admin Console.
+
+## Features
+
+- Creates a "Hello World" navigation item in the admin console sidebar
+- Displays a JSF page with content from a CDI bean
+- Demonstrates modern Jakarta Faces integration with the legacy admin console
+
+## Files
+
+- `HelloWorldConsolePlugin.java` - HK2 service that registers the plugin. Needed to register the integration points in `console-config.xml`
+- `console-config.xml` - Plugin configuration defining integration points. Adds `helloWorldNavNode.jsf` to the sidebar
+- `helloWorldNavNode.jsf` - Navigation node for the sidebar, opens `hello.xhtml`
+- `hello.xhtml` - Main JSF page displayed when clicking the navigation item
+- `HelloWorldBean.java` - CDI bean that provides the message content
+
+## Usage
+
+1. Build GlassFish with this plugin included
+2. Start GlassFish domain
+3. Access the admin console at http://localhost:4848
+4. Look for "Hello World" in the sidebar navigation
+5. Click it to see the JSF page
+
+## Tutorial
+
+See the [Creating JSF Pages in GlassFish Admin Console](https://github.com/eclipse-ee4j/glassfish/wiki/admin-console-faces-tutorial.adoc) tutorial in GlassFish Wiki for a complete step-by-step tutorial on creating similar plugins.
diff --git a/appserver/admingui/hello-world/pom.xml b/appserver/admingui/hello-world/pom.xml
new file mode 100644
index 00000000000..2fe098788d7
--- /dev/null
+++ b/appserver/admingui/hello-world/pom.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+ 4.0.0
+
+
+
+ org.glassfish.main.admingui
+ admingui
+ 7.1.0-SNAPSHOT
+ ../pom.xml
+
+
+ console-hello-world-plugin
+
+ glassfish-jar
+
+ Admin Console Hello World Plugin
+ Hello World plugin example for GlassFish Admin Console
+
+
+
+
+ jakarta.enterprise
+ jakarta.enterprise.cdi-api
+ provided
+
+
+
+ org.glassfish.main.admingui
+ console-common
+ ${project.version}
+ provided
+
+
+
+
+
+
+ dev
+
+
+ false
+
+ ${basedir}/../../../distributions/glassfish/target/stage/glassfish7/glassfish/lib/install/applications/__admingui/WEB-INF/lib/console-hello-world-plugin-${project.version}.jar
+
+
+
+
diff --git a/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/HelloWorldBean.java b/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/HelloWorldBean.java
new file mode 100644
index 00000000000..4365929611f
--- /dev/null
+++ b/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/HelloWorldBean.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package org.glassfish.helloworld.admingui;
+
+import jakarta.enterprise.context.RequestScoped;
+import jakarta.inject.Named;
+
+/**
+ * CDI backing bean for the Hello World JSF page in GlassFish Admin Console.
+ * This demonstrates how to create modern Jakarta Faces pages within the legacy
+ * Admin Console framework. The key aspects:
+ * 1. Uses CDI (@Named, @RequestScoped) instead of JSF managed beans
+ * 2. Works seamlessly with the existing console infrastructure
+ * 3. Can be injected with HK2 services via CDI producers if needed
+ * 4. Follows standard JSF patterns for data binding and actions
+ * The bean is automatically discovered by CDI due to the implicit bean archive
+ * (no beans.xml needed) and made available to JSF via the @Named annotation.
+ */
+@Named
+@RequestScoped
+public class HelloWorldBean {
+
+ /**
+ * Returns the main greeting message displayed on the page.
+ * This method is called via EL expression #{helloWorldBean.message}
+ * in the XHTML template. The property name follows JavaBean conventions
+ * (getMessage() -> message property).
+ * @return the greeting message
+ */
+ public String getMessage() {
+ return "Hello World from GlassFish Admin Console!";
+ }
+
+ /**
+ * Returns a description of what this page demonstrates.
+ * Called via EL expression #{helloWorldBean.description} to show
+ * additional information about the JSF integration.
+ * @return the description text
+ */
+ public String getDescription() {
+ return "This is a JSF page created using Jakarta Faces in the GlassFish Admin Console.";
+ }
+}
diff --git a/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/HelloWorldConsolePlugin.java b/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/HelloWorldConsolePlugin.java
new file mode 100644
index 00000000000..e1281c2c9cf
--- /dev/null
+++ b/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/HelloWorldConsolePlugin.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package org.glassfish.helloworld.admingui;
+
+import java.net.URL;
+
+import org.glassfish.api.admingui.ConsoleProvider;
+import org.jvnet.hk2.annotations.Service;
+
+/**
+ * HK2 service that registers this module as an Admin Console plugin.
+ * This class serves as the entry point for the plugin system to discover
+ * and integrate this module with the Admin Console. Key aspects:
+ * 1. @Service annotation makes this discoverable by HK2 service locator
+ * 2. ConsoleProvider interface is the contract for console plugins
+ * 3. getConfiguration() returning null means use default config file location
+ * 4. The plugin system will look for META-INF/admingui/console-config.xml
+ * The plugin architecture allows modular extensions to the console without
+ * modifying core console code. Each plugin can contribute:
+ * - Navigation nodes (tree items)
+ * - Integration points (masthead, content areas)
+ * - Resources (JSF pages, CSS, images)
+ * - Java components (CDI beans, HK2 services)
+ * This particular plugin demonstrates the "simplified plugin" approach where
+ * the plugin JAR is included directly in the admin WAR rather than deployed
+ * as a separate OSGi bundle.
+ */
+@Service
+public class HelloWorldConsolePlugin implements ConsoleProvider {
+
+ /**
+ * Returns the URL to the plugin configuration file.
+ * Returning null tells the plugin system to look for the default
+ * configuration file at META-INF/admingui/console-config.xml within
+ * this plugin's JAR file.
+ * Alternative implementations could return a specific URL to a
+ * configuration file located elsewhere.
+ * @return null to use default config file location
+ */
+ @Override
+ public URL getConfiguration() {
+ return null;
+ }
+}
diff --git a/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/package-info.java b/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/package-info.java
new file mode 100644
index 00000000000..f0218d16bb6
--- /dev/null
+++ b/appserver/admingui/hello-world/src/main/java/org/glassfish/helloworld/admingui/package-info.java
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+/**
+ * Hello World plugin for GlassFish Admin Console demonstrating JSF integration.
+ */
+package org.glassfish.helloworld.admingui;
diff --git a/appserver/admingui/hello-world/src/main/resources/META-INF/admingui/console-config.xml b/appserver/admingui/hello-world/src/main/resources/META-INF/admingui/console-config.xml
new file mode 100644
index 00000000000..f7097a2df31
--- /dev/null
+++ b/appserver/admingui/hello-world/src/main/resources/META-INF/admingui/console-config.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/appserver/admingui/hello-world/src/main/resources/META-INF/resources/helloworld/hello.xhtml b/appserver/admingui/hello-world/src/main/resources/META-INF/resources/helloworld/hello.xhtml
new file mode 100644
index 00000000000..aa2a4669a75
--- /dev/null
+++ b/appserver/admingui/hello-world/src/main/resources/META-INF/resources/helloworld/hello.xhtml
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+ Hello World - GlassFish Admin Console
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/appserver/admingui/hello-world/src/main/resources/META-INF/resources/helloworld/navigation/helloWorldNavNode.jsf b/appserver/admingui/hello-world/src/main/resources/META-INF/resources/helloworld/navigation/helloWorldNavNode.jsf
new file mode 100644
index 00000000000..6ca1d71bdbe
--- /dev/null
+++ b/appserver/admingui/hello-world/src/main/resources/META-INF/resources/helloworld/navigation/helloWorldNavNode.jsf
@@ -0,0 +1,49 @@
+
+
+
+
diff --git a/appserver/admingui/modernized-admingui/faces-config.NavData b/appserver/admingui/modernized-admingui/faces-config.NavData
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/appserver/admingui/modernized-admingui/pom.xml b/appserver/admingui/modernized-admingui/pom.xml
new file mode 100644
index 00000000000..031a260f412
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/pom.xml
@@ -0,0 +1,101 @@
+
+
+
+
+ 4.0.0
+
+
+
+ org.glassfish.main.admingui
+ admingui
+ 7.1.0-SNAPSHOT
+ ../pom.xml
+
+
+ modernized-admingui
+
+ glassfish-jar
+
+ Admin Console Modernized Admingui
+ This module contain modernized console admin GUI
+
+
+
+
+ jakarta.enterprise
+ jakarta.enterprise.cdi-api
+ provided
+
+
+
+ org.glassfish.main.admingui
+ console-common
+ ${project.version}
+ provided
+
+
+ org.primefaces
+ primefaces
+ 15.0.7
+ jakarta
+
+
+
+
+
+
+ dev
+
+
+ false
+
+ ${basedir}/../../../appserver/distributions/glassfish/target/stage/glassfish7/glassfish/lib/install/applications/__admingui/WEB-INF/lib/modernized-admingui-${project.version}.jar
+
+
+
+
diff --git a/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/LoggerSettingsPlugin.java b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/LoggerSettingsPlugin.java
new file mode 100644
index 00000000000..430dce4be23
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/LoggerSettingsPlugin.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package org.glassfish.modernized.admingui;
+
+import java.net.URL;
+
+import org.glassfish.api.admingui.ConsoleProvider;
+import org.jvnet.hk2.annotations.Service;
+
+/**
+ * HK2 service that registers this module as an Admin Console plugin.
+ * This class serves as the entry point for the plugin system to discover
+ * and integrate this module with the Admin Console. Key aspects:
+ * 1. @Service annotation makes this discoverable by HK2 service locator
+ * 2. ConsoleProvider interface is the contract for console plugins
+ * 3. getConfiguration() returning null means use default config file location
+ * 4. The plugin system will look for META-INF/admingui/console-config.xml
+ * The plugin architecture allows modular extensions to the console without
+ * modifying core console code. Each plugin can contribute:
+ * - Navigation nodes (tree items)
+ * - Integration points (masthead, content areas)
+ * - Resources (JSF pages, CSS, images)
+ * - Java components (CDI beans, HK2 services)
+ * This particular plugin demonstrates the "simplified plugin" approach where
+ * the plugin JAR is included directly in the admin WAR rather than deployed
+ * as a separate OSGi bundle.
+ */
+@Service
+public class LoggerSettingsPlugin implements ConsoleProvider {
+
+ /**
+ * Returns the URL to the plugin configuration file.
+ * Returning null tells the plugin system to look for the default
+ * configuration file at META-INF/admingui/console-config.xml within
+ * this plugin's JAR file.
+ * Alternative implementations could return a specific URL to a
+ * configuration file located elsewhere.
+ * @return null to use default config file location
+ */
+ @Override
+ public URL getConfiguration() {
+ return null;
+ }
+}
diff --git a/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/LoggerSettingsView.java b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/LoggerSettingsView.java
new file mode 100644
index 00000000000..40fc95c8fb8
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/LoggerSettingsView.java
@@ -0,0 +1,159 @@
+package org.glassfish.modernized.admingui;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.faces.view.ViewScoped;
+import jakarta.inject.Named;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.glassfish.modernized.admingui.utilis.LoggerRow;
+
+@Named
+@ViewScoped
+public class LoggerSettingsView implements Serializable {
+
+ // --------- Onglet General
+ private boolean writeToSystemLog = true;
+ private boolean logToFile = true;
+ private boolean rotateAtMidnight = true;
+ private boolean multilineMode = false;
+
+ private String consoleFormat = "ULF";
+ private String fileFormat = "ODL";
+
+ private List consoleFormats;
+ private List fileFormats;
+
+ private List formatExcludeFields = new ArrayList<>(Arrays.asList("tid","timeMillis","levelValue"));
+
+ private int fileRotationLimit = 100; // MB
+ private int fileRotationTime = 0; // minutes
+ private int flushFrequency = 1;
+ private int maxHistoryFiles = 0;
+
+ private String logFile = "${com.sun.aas.instanceRoot}/logs/server.log";
+ private String logHandler = "org.glassfish.main.jul.handler.SimpleLogHandler";
+
+ // --------- Onglet Log Levels
+ private List loggers;
+ private List selected = new ArrayList<>();
+ private String bulkLevel = "INFO";
+ private List levels;
+
+ @PostConstruct
+ public void init() {
+ consoleFormats = Arrays.asList("ULF", "ODL");
+ fileFormats = Arrays.asList("ODL", "ULF");
+ levels = Arrays.asList("OFF","SEVERE","WARNING","INFO","CONFIG","FINE","FINER","FINEST","ALL");
+
+ // Démo : quelques loggers typiques GlassFish / Jakarta
+ loggers = new ArrayList<>();
+ loggers.add(new LoggerRow("com.sun.enterprise.container.common", "INFO"));
+ loggers.add(new LoggerRow("org.glassfish.grizzly.http2", "INFO"));
+ loggers.add(new LoggerRow("jakarta.enterprise.system", "INFO"));
+ loggers.add(new LoggerRow("org.apache.jasper", "INFO"));
+ loggers.add(new LoggerRow("org.glassfish.main", "INFO"));
+ loggers.add(new LoggerRow("jakarta.enterprise.web", "INFO"));
+ loggers.add(new LoggerRow("org.jvnet.hk2.osgiadapter", "WARNING"));
+ }
+
+ // --------- Actions
+ public void loadDefaults() {
+ writeToSystemLog = true;
+ logToFile = true;
+ rotateAtMidnight = true;
+ multilineMode = false;
+ consoleFormat = "ULF";
+ fileFormat = "ODL";
+ formatExcludeFields = new ArrayList<>(Arrays.asList("tid","timeMillis","levelValue"));
+ fileRotationLimit = 100;
+ fileRotationTime = 0;
+ flushFrequency = 1;
+ maxHistoryFiles = 0;
+ logFile = "${com.sun.aas.instanceRoot}/logs/server.log";
+ logHandler = "org.glassfish.main.jul.handler.SimpleLogHandler";
+ // Ici, tu pourrais recharger depuis une source réelle
+ }
+
+ public void save() {
+ // TODO: Persister dans ton service (asadmin, JMX, rest, base de données…)
+ // Pour la démo, rien à faire.
+ }
+
+ public void addLogger() {
+ // Ajoute une ligne vide à compléter
+ loggers.add(new LoggerRow("new.logger.name", "INFO"));
+ }
+
+ public void deleteSelected() {
+ if (selected != null && !selected.isEmpty()) {
+ loggers.removeAll(selected);
+ selected.clear();
+ }
+ }
+
+ public void applyBulkLevel() {
+ if (selected != null) {
+ for (LoggerRow r : selected) {
+ r.setLevel(bulkLevel);
+ }
+ }
+ }
+
+ // --------- Getters/Setters (générés)
+ public boolean isWriteToSystemLog() { return writeToSystemLog; }
+ public void setWriteToSystemLog(boolean v) { this.writeToSystemLog = v; }
+
+ public boolean isLogToFile() { return logToFile; }
+ public void setLogToFile(boolean v) { this.logToFile = v; }
+
+ public boolean isRotateAtMidnight() { return rotateAtMidnight; }
+ public void setRotateAtMidnight(boolean v) { this.rotateAtMidnight = v; }
+
+ public boolean isMultilineMode() { return multilineMode; }
+ public void setMultilineMode(boolean v) { this.multilineMode = v; }
+
+ public String getConsoleFormat() { return consoleFormat; }
+ public void setConsoleFormat(String consoleFormat) { this.consoleFormat = consoleFormat; }
+
+ public String getFileFormat() { return fileFormat; }
+ public void setFileFormat(String fileFormat) { this.fileFormat = fileFormat; }
+
+ public List getConsoleFormats() { return consoleFormats; }
+ public List getFileFormats() { return fileFormats; }
+
+ public List getFormatExcludeFields() { return formatExcludeFields; }
+ public void setFormatExcludeFields(List formatExcludeFields) { this.formatExcludeFields = formatExcludeFields; }
+
+ public int getFileRotationLimit() { return fileRotationLimit; }
+ public void setFileRotationLimit(int fileRotationLimit) { this.fileRotationLimit = fileRotationLimit; }
+
+ public int getFileRotationTime() { return fileRotationTime; }
+ public void setFileRotationTime(int fileRotationTime) { this.fileRotationTime = fileRotationTime; }
+
+ public int getFlushFrequency() { return flushFrequency; }
+ public void setFlushFrequency(int flushFrequency) { this.flushFrequency = flushFrequency; }
+
+ public int getMaxHistoryFiles() { return maxHistoryFiles; }
+ public void setMaxHistoryFiles(int maxHistoryFiles) { this.maxHistoryFiles = maxHistoryFiles; }
+
+ public String getLogFile() { return logFile; }
+ public void setLogFile(String logFile) { this.logFile = logFile; }
+
+ public String getLogHandler() { return logHandler; }
+ public void setLogHandler(String logHandler) { this.logHandler = logHandler; }
+
+ public List getLoggers() { return loggers; }
+ public void setLoggers(List loggers) { this.loggers = loggers; }
+
+ public List getSelected() { return selected; }
+ public void setSelected(List selected) { this.selected = selected; }
+
+ public String getBulkLevel() { return bulkLevel; }
+ public void setBulkLevel(String bulkLevel) { this.bulkLevel = bulkLevel; }
+
+ public List getLevels() { return levels; }
+}
diff --git a/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/package-info.java b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/package-info.java
new file mode 100644
index 00000000000..f0998ef68b3
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+/**
+ * Modernized Admin Console GUI.
+ */
+package org.glassfish.modernized.admingui;
\ No newline at end of file
diff --git a/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/utilis/LoggerRow.java b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/utilis/LoggerRow.java
new file mode 100644
index 00000000000..b613e5209ac
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/java/org/glassfish/modernized/admingui/utilis/LoggerRow.java
@@ -0,0 +1,26 @@
+
+
+package org.glassfish.modernized.admingui.utilis;
+
+import java.io.Serializable;
+
+public class LoggerRow implements Serializable {
+ private String name;
+ private String level; // e.g. INFO, WARNING, FINE...
+ private String customLevel; // free text
+
+ public LoggerRow() {}
+ public LoggerRow(String name, String level) {
+ this.name = name;
+ this.level = level;
+ }
+
+ public String getName() { return name; }
+ public void setName(String name) { this.name = name; }
+
+ public String getLevel() { return level; }
+ public void setLevel(String level) { this.level = level; }
+
+ public String getCustomLevel() { return customLevel; }
+ public void setCustomLevel(String customLevel) { this.customLevel = customLevel; }
+}
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/META-INF/admingui/console-config.xml b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/admingui/console-config.xml
new file mode 100644
index 00000000000..14b3c55bb9a
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/admingui/console-config.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/META-INF/faces-config.xml b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 00000000000..d6556a3e7a2
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ i18n.messages
+ msg
+
+
+
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/gui/loggerSettings.xhtml b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/gui/loggerSettings.xhtml
new file mode 100644
index 00000000000..f690ef05b7a
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/gui/loggerSettings.xhtml
@@ -0,0 +1,199 @@
+
+
+
+
+
+ Log viewer - GlassFish Admin Console
+
+
+
+
+
+
+
+
+
+
+
+
Logger test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/images/logger.gif b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/images/logger.gif
new file mode 100644
index 00000000000..887aaed1cde
Binary files /dev/null and b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/images/logger.gif differ
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/navigation/LoggerSettingsNavNode.jsf b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/navigation/LoggerSettingsNavNode.jsf
new file mode 100644
index 00000000000..f24625a4b11
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/resources/META-INF/resources/navigation/LoggerSettingsNavNode.jsf
@@ -0,0 +1,49 @@
+
+
+
+
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages.properties b/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages.properties
new file mode 100644
index 00000000000..b9ee824ec9a
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages.properties
@@ -0,0 +1,36 @@
+tab.general=General
+tab.logLevels=Log Levels
+
+btn.loadDefaults=Load Defaults
+btn.save=Save
+btn.addLogger=Add Logger
+btn.deleteLogger=Delete Logger
+btn.changeLevel=Change Level
+
+panel.loggerSettings=Logger Settings
+table.loggerLevels=Module Log Levels
+
+label.writeToSystemLog=Write to System Log
+label.logToFile=Log to Log File
+label.rotationOnDateChange=Rotation on Date Change
+label.multilineMode=Multiline Mode
+label.consoleLoggingFormat=Console Logging Format
+label.logFileLoggingFormat=Log File Logging Format
+label.formatExcludeFields=Format Exclude Fields
+label.fileRotationLimit=File Rotation Limit (MB)
+label.fileRotationTimeLimit=File Rotation Time Limit (minutes)
+label.flushFrequency=Flush Frequency
+label.maximumHistoryFiles=Maximum History Files
+label.logFile=Log File
+label.logHandler=Log Handler
+
+ph.excludeFields=e.g. tid, timeMillis, levelValue
+ph.logFile=${com.sun.aas.instanceRoot}/logs/server.log
+ph.logHandler=org.glassfish.main.jul.handler.SimpleLogHandler
+ph.customLevel=e.g. FINEST
+
+col.loggerName=Logger Name
+col.logLevel=Log Level
+col.custom=Custom (optional)
+
+msg.saved=Settings saved
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages_en.properties b/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages_en.properties
new file mode 100644
index 00000000000..b9ee824ec9a
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages_en.properties
@@ -0,0 +1,36 @@
+tab.general=General
+tab.logLevels=Log Levels
+
+btn.loadDefaults=Load Defaults
+btn.save=Save
+btn.addLogger=Add Logger
+btn.deleteLogger=Delete Logger
+btn.changeLevel=Change Level
+
+panel.loggerSettings=Logger Settings
+table.loggerLevels=Module Log Levels
+
+label.writeToSystemLog=Write to System Log
+label.logToFile=Log to Log File
+label.rotationOnDateChange=Rotation on Date Change
+label.multilineMode=Multiline Mode
+label.consoleLoggingFormat=Console Logging Format
+label.logFileLoggingFormat=Log File Logging Format
+label.formatExcludeFields=Format Exclude Fields
+label.fileRotationLimit=File Rotation Limit (MB)
+label.fileRotationTimeLimit=File Rotation Time Limit (minutes)
+label.flushFrequency=Flush Frequency
+label.maximumHistoryFiles=Maximum History Files
+label.logFile=Log File
+label.logHandler=Log Handler
+
+ph.excludeFields=e.g. tid, timeMillis, levelValue
+ph.logFile=${com.sun.aas.instanceRoot}/logs/server.log
+ph.logHandler=org.glassfish.main.jul.handler.SimpleLogHandler
+ph.customLevel=e.g. FINEST
+
+col.loggerName=Logger Name
+col.logLevel=Log Level
+col.custom=Custom (optional)
+
+msg.saved=Settings saved
diff --git a/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages_fr.properties b/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages_fr.properties
new file mode 100644
index 00000000000..64313a0836d
--- /dev/null
+++ b/appserver/admingui/modernized-admingui/src/main/resources/i18n/messages_fr.properties
@@ -0,0 +1,43 @@
+# Titres d\u2019onglets
+tab.general=G\u00e9n\u00e9ral
+tab.logLevels=Niveaux de log
+
+# Boutons / Actions
+btn.loadDefaults=Charger les valeurs par d\u00e9faut
+btn.save=Enregistrer
+btn.addLogger=Ajouter un logger
+btn.deleteLogger=Supprimer
+btn.changeLevel=Changer le niveau
+
+# En-t\u00eates / panneaux
+panel.loggerSettings=Param\u00e8tres du logger
+table.loggerLevels=Niveaux des modules
+
+# Libell\u00e9s (onglet G\u00e9n\u00e9ral)
+label.writeToSystemLog=\u00c9crire dans le journal syst\u00e8me
+label.logToFile=\u00c9crire dans un fichier de log
+label.rotationOnDateChange=Rotation au changement de date
+label.multilineMode=Mode multilignes
+label.consoleLoggingFormat=Format de journalisation console
+label.logFileLoggingFormat=Format de journalisation fichier
+label.formatExcludeFields=Champs exclus du format
+label.fileRotationLimit=Limite de rotation du fichier (Mo)
+label.fileRotationTimeLimit=Limite de temps de rotation (minutes)
+label.flushFrequency=Fr\u00e9quence de vidage (flush)
+label.maximumHistoryFiles=Nombre maximum de fichiers d\u2019historique
+label.logFile=Fichier de log
+label.logHandler=Gestionnaire (handler) de log
+
+# Placeholders
+ph.excludeFields=ex : tid, timeMillis, levelValue
+ph.logFile=\${com.sun.aas.instanceRoot}/logs/server.log
+ph.logHandler=org.glassfish.main.jul.handler.SimpleLogHandler
+ph.customLevel=ex. FINEST
+
+# Table (onglet Log Levels)
+col.loggerName=Nom du logger
+col.logLevel=Niveau de log
+col.custom=Personnalis\u00e9 (optionnel)
+
+# Messages / feedback
+msg.saved=Param\u00e8tres enregistr\u00e9s
diff --git a/appserver/admingui/pom.xml b/appserver/admingui/pom.xml
index 4a0a8ffc7b8..4e3c772480b 100644
--- a/appserver/admingui/pom.xml
+++ b/appserver/admingui/pom.xml
@@ -87,6 +87,7 @@
concurrentclustercommandrecorder
+ hello-worldcommunity-themewebgf-admingui-connector
@@ -99,6 +100,7 @@
corbafullwar
+ modernized-admingui
diff --git a/appserver/admingui/war/pom.xml b/appserver/admingui/war/pom.xml
index d39655eadfd..6e2373fbd75 100644
--- a/appserver/admingui/war/pom.xml
+++ b/appserver/admingui/war/pom.xml
@@ -65,6 +65,22 @@
+
+ ${project.groupId}
+ console-hello-world-plugin
+ ${project.version}
+
+
+ *
+ *
+
+
+
+
+ ${project.groupId}
+ modernized-admingui
+ ${project.version}
+