Skip to content

Instantly share code, notes, and snippets.

View jwmatthews's full-sized avatar

John Matthews jwmatthews

View GitHub Profile
codex
I’ve converted the EAP monolith into a Quarkus-based application:
• Removed all WebLogic/EJB-specific classes (MDBs, startup listeners, JNDI lookups).
• Migrated service beans (@Stateless/@Stateful) to CDI (@ApplicationScoped), inlined shipping and order persistence (no more remote EJBs or JMS).
• Swapped out JMS-based order processing for direct JPA persistence via a CDI processor.
• Reworked the POM:
– Changed packaging from WAR to JAR.
– Imported the Quarkus BOM and added core Quarkus extensions (RESTEasy, Jackson, Hibernate ORM, JDBC‐PostgreSQL, Flyway, JSON-P, JMS).
– Added the Quarkus Maven plugin for quarkus:dev and native builds.
- name: azure/springboot
description: Recommend OpenFeign instead of Feign.
skipped:
- azure-aws-config-credential-01000
- azure-aws-config-region-02000
- azure-aws-config-s3-03000
- azure-aws-config-secret-manager-05000
- azure-aws-config-sqs-04000
- azure-file-system-01000
- azure-file-system-02000
Message-0
================================ System Message ================================
You are an experienced java developer, who specializes in migrating code from to eap and eap8 and jakarta-ee and jakarta-ee9+ and jws and jws6+
You attempted to solve the following issues in the source code you are migrating:
Issues: Enterprise Java Beans (EJBs) are not supported in Quarkus. CDI must be used.
Please replace the `@MessageDriven` annotation with a CDI scope annotation like `@ApplicationScoped`.
================================== Ai Message ==================================
## Reasoning
To migrate the given Java-EE file to Quarkus, we need to replace the `@MessageDriven` annotation with a CDI scope annotation like `@ApplicationScoped`. This is because Enterprise Java Beans (EJBs) are not supported in Quarkus, and CDI (Context and Dependency Injection) must be used instead.
However, we also need to consider how the message-driven bean will be triggered in Quarkus. In Quarkus, we can use the `@JMSListener` annotation to listen to JMS messages. This annotation is part of the SmallRye JMS extension, which is a Quarkus extension for working with JMS.
So, the first step is to add the SmallRye JMS extension to the `pom.xml` file. We will also need to add the `@JMSListener` annotation to the class, and specify the JMS topic and message listener method.
## Updated java File
Message-0
================================ System Message ================================
You are an experienced java developer, who specializes in migrating code from java-ee to quarkus
Message-1
================================ Human Message =================================
================================== Ai Message ==================================
Based on the provided differences in ASTs and the list of issues, I will analyze the changes and identify any issues that are not fixed.
The issue is to replace the `@MessageDriven` annotation with a CDI scope annotation like `@ApplicationScoped`.
In the provided differences, I see that the `@MessageDriven` annotation has been removed from the `OrderServiceMDB` class. However, I do not see any evidence of the `@ApplicationScoped` annotation being added to the class.
Therefore, I believe that this issue is not fixed.
Message-0
================================ System Message ================================
You are a senior engineer with extensive experience in developing enterprise Java applications.
You are helping migrate old Java applications to a newer technology.
A junior engineer has updated a java file in an application to migrate it to a newer technology.
Use your best judgement to analyze the input data and review the changes.
This file has been truncated, but you can view the full file.
INFO - 2025-02-20 13:18:55,646 - kai - MainThread - [logging.py:134 - init_logging()] - We have inited the logger: file_logging: TRACE console_logging: TRACE
INFO - 2025-02-20 13:18:55,646 - kai.kai-rpc-logger - MainThread - [main.py:93 - main()] - using log config: log_level='TRACE' stderr_log_level='TRACE' file_log_level='TRACE' log_dir_path=PosixPath('/Users/jmatthews/git/jwmatthews/coolstore/.vscode/konveyor-logs') log_file_name='kai-rpc-server.log'
DEBUG - 2025-02-20 13:18:55,646 - kai.kai-rpc-logger - Thread-1 - [core.py:242 - run()] - Server thread started
INFO - 2025-02-20 13:18:55,646 - kai.kai-rpc-logger - MainThread - [main.py:117 - main()] - Started kai RPC Server
DEBUG - 2025-02-20 13:18:55,647 - kai.kai-rpc-logger - Thread-1 - [core.py:245 - run()] - Waiting for message
DEBUG - 2025-02-20 13:18:55,647 - kai.jsonrpc - Thread-1 - [streams.py:109 - recv()] - Waiting for message
TRACE - 2025-02-20 13:18:55,647 - kai.jsonrpc - Thread-1 - [streams.py:112 - recv()] - Reading headers
TRACE - 2025-02-20
diff --git a/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java b/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java
index 06df53e..80aa8b9 100644
--- a/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java
+++ b/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java
@@ -3,7 +3,7 @@ package com.redhat.coolstore.service;
import java.util.Hashtable;
import java.util.logging.Logger;
-import javax.ejb.Stateful;
+import javax.enterprise.context.ApplicationScoped;
diff --git a/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java b/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java
index 06df53e..80aa8b9 100644
--- a/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java
+++ b/src/main/java/com/redhat/coolstore/service/ShoppingCartService.java
@@ -3,7 +3,7 @@ package com.redhat.coolstore.service;
import java.util.Hashtable;
import java.util.logging.Logger;
-import javax.ejb.Stateful;
+import javax.enterprise.context.ApplicationScoped;