maven wildfly 插件
v4.2.1.Final
无法使用 Level.FINE
包记录 java.util.logging
及以下版本。我尝试按照文档here进行操作,但没有 java.util.logging 的链接。当运行 configuration.cli
脚本时,按照该页面上的步骤操作会出现以下错误。
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.wildfly.plugins:wildfly-maven-plugin:4.2.1.Final:dev (default-cli) on project jakartaee: Failed to execute commands: The command is not available in the current context (e.g. required subsystems or connection to the controller might be unavailable).
Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to execute commands: The command is not available in the current context (e.g. required subsystems or connection to the controller might be unavailable).
基于您的示例项目(https://github.com/ragavendra/mavenLog)
mavenLog
├── pom.xml
└── src
└── main
├── java
│ └── org
│ └── eclipse
│ └── jakarta
│ └── servlet
│ ├── Echo1Servlet.java
│ └── Echo2Servlet.java
└── webapp
└── WEB-INF
└── web.xml
更新1:
<wildfly-plugin.version>5.0.0.Final</wildfly-plugin.version>
添加:
<!-- jboss-logging API -->
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.5.3.Final</version>
<scope>provided</scope>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse</groupId>
<artifactId>hello-world</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>jakartaee-hello-world</name>
<description>
This is a very simple Jakarta EE application generated by the official Eclipse Starter.
</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.report.sourceEncoding>UTF-8</project.report.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
<jakartaee-api.version>10.0.0</jakartaee-api.version>
<wildfly.version>30.0.1.Final</wildfly.version>
<compiler-plugin.version>3.11.0</compiler-plugin.version>
<war-plugin.version>3.4.0</war-plugin.version>
<!--
<wildfly-plugin.version>4.2.1.Final</wildfly-plugin.version>
-->
<wildfly-plugin.version>5.0.0.Final</wildfly-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>${jakartaee-api.version}</version>
<scope>provided</scope>
</dependency>
<!-- jboss-logging API -->
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.5.3.Final</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>jakartaee-hello-world</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${war-plugin.version}</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!-- Execute 'mvn clean package wildfly:dev' to run the application. -->
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${wildfly-plugin.version}</version>
<configuration>
<version>${wildfly.version}</version>
<server-config>standalone-full.xml</server-config>
<!-- Execute the script in offline mode -->
<offline>true</offline>
<scripts>
<script>${project.build.scriptSourceDirectory}/configuration.cli</script>
</scripts>
</configuration>
</plugin>
</plugins>
</build>
</project>
<web-app version="6.0"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>Echo1Servlet</display-name>
<servlet-name>Echo1Servlet</servlet-name>
<servlet-class>org.eclipse.jakarta.servlet.Echo1Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Echo1Servlet</servlet-name>
<url-pattern>/echo1</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>Echo2Servlet</display-name>
<servlet-name>Echo2Servlet</servlet-name>
<servlet-class>org.eclipse.jakarta.servlet.Echo2Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Echo2Servlet</servlet-name>
<url-pattern>/echo2</url-pattern>
</servlet-mapping>
</web-app>
使用
org.jboss.logging.Logger
package org.eclipse.jakarta.servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.jboss.logging.Logger;
import java.io.IOException;
public class Echo1Servlet extends HttpServlet {
private static final Logger logger = Logger.getLogger(Echo1Servlet.class);
private static final long serialVersionUID = 1L;
public Echo1Servlet() {
super();
logger.info("Echo1Servlet()");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("doGet Served at: " + request.getContextPath());
String msg = request.getParameter("msg");
logger.info("msg = " + msg);
response.getWriter().append("Served at: ").append(request.getContextPath()).append("\nmsg=" + msg);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("doPost Served at: " + request.getContextPath());
String msg = request.getParameter("msg");
logger.info("msg = " + msg);
response.getWriter().append("Served at: ").append(request.getContextPath()).append("\nmsg=" + msg);
}
}
使用
java.util.logging.Logger
package org.eclipse.jakarta.servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.logging.Logger;
public class Echo2Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//private final Logger logger = Logger.getLogger(Echo2Servlet.class.getName());
private final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());
public Echo2Servlet() {
super();
logger.info("Echo2Servlet()");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("doGet Served at: " + request.getContextPath());
String msg = request.getParameter("msg");
logger.info("msg = " + msg);
response.getWriter().append("Served at: ").append(request.getContextPath()).append("\nmsg=" + msg);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("doPost Served at: " + request.getContextPath());
String msg = request.getParameter("msg");
logger.info("msg = " + msg);
response.getWriter().append("Served at: ").append(request.getContextPath()).append("\nmsg=" + msg);
doGet(request, response);
}
}
编辑
.bashrc
nano ~/.bashrc
添加环境变量
WILDFLY_HOME
export WILDFLY_HOME=/your-path/wildfly-30.0.1.Final
cd $WILDFLY_HOME/bin
./standalone.sh
mvn wildfly:deploy
curl http://localhost:8080/jakartaee-hello-world/echo1?msg=Hello
curl -X POST -d "msg=Hello" http://localhost:8080/jakartaee-hello-world/echo1
curl http://localhost:8080/jakartaee-hello-world/echo2?msg=Hello
curl -X POST -d "msg=Hello" http://localhost:8080/jakartaee-hello-world/echo2
wildfly-30.0.1.最终/独立/日志
2024-09-26 12:53:13,412 INFO [org.eclipse.jakarta.servlet.Echo1Servlet] (default task-1) Echo1Servlet()
2024-09-26 12:53:13,412 INFO [org.eclipse.jakarta.servlet.Echo1Servlet] (default task-1) doGet Served at: /jakartaee-hello-world
2024-09-26 12:53:13,412 INFO [org.eclipse.jakarta.servlet.Echo1Servlet] (default task-1) msg = Hello
2024-09-26 12:53:19,903 INFO [org.eclipse.jakarta.servlet.Echo1Servlet] (default task-1) doPost Served at: /jakartaee-hello-world
2024-09-26 12:53:19,906 INFO [org.eclipse.jakarta.servlet.Echo1Servlet] (default task-1) msg = Hello
2024-09-26 12:54:58,597 INFO [org.eclipse.jakarta.servlet.Echo2Servlet] (default task-1) Echo2Servlet()
2024-09-26 12:54:58,597 INFO [org.eclipse.jakarta.servlet.Echo2Servlet] (default task-1) doGet Served at: /jakartaee-hello-world
2024-09-26 12:54:58,598 INFO [org.eclipse.jakarta.servlet.Echo2Servlet] (default task-1) msg = Hello
2024-09-26 12:55:03,037 INFO [org.eclipse.jakarta.servlet.Echo2Servlet] (default task-1) doPost Served at: /jakartaee-hello-world
2024-09-26 12:55:03,038 INFO [org.eclipse.jakarta.servlet.Echo2Servlet] (default task-1) msg = Hello
2024-09-26 12:55:03,038 INFO [org.eclipse.jakarta.servlet.Echo2Servlet] (default task-1) doGet Served at: /jakartaee-hello-world
2024-09-26 12:55:03,038 INFO [org.eclipse.jakarta.servlet.Echo2Servlet] (default task-1) msg = Hello
结论:
(1)没有专门的配置configuration.cli,所以在管理界面中看不到
org.eclipse.jakarta
。
(2) 使用
org.jboss.logging.Logger
或java.util.logging.Logger
可以将日志输出到Wildfly的server.log
(3)只关注要测试的关键点,所以我添加了简单的Echo1Servlet和Echo2Servlet来做简单的日志测试