Table of Contents
This chapter describes the new functions and the changes made to JEUS v7.0 Fix #2.
This section describes the new functions of JEUS.
Improved JEUS Monitoring function
Provides a function to group (preset) individual monitoring items provided by each server. (The preset is managed and saved by DAS.)
To be used in WebAdmin, information and values about monitoring properties are carried over. Console commands for configuring and editing the preset are provided.
Added function to regularly monitor MBean statistical information and to display it in a chart.
Added function to monitor statement cache and server log.
Added a page search function.
Added function to check the list of patch files applied to a server
Added function to retrieve patch information and to display nodes (in table format) to which each path file is applied. (Monitoring > Patch Info)
Added function to duplicate multiple servers
Added function to duplicate servers using the options, Number Of Server (the number of server to be duplicated) and Step (the increment of a port when Listen Port is duplicated).
Checks if there are any duplicated addresses or ports and displays the result with a message.
Added function to sort a table
Provides a function to sort table rows when the table header is clicked.
Three modes are available: unsorted, ascend, and descend.
Redesigned session clustering scope
Separated session cluster from JEUS cluster.
Provides a function to replace Session manager used by Servlet with InfiniCache.
Separated session provider
Separated session provider to provide session server SPI.
The GMS managed in the domain level and GMS managed in the cluster level were integrated into a single GMS in the domain level.
Added function to prevent duplicate logins
JEUS now supports this function, which is also provided by applications.
When an application executes setAttribute with the designated key, it is considered a login. If a duplicate login exists, the existing session is removed.
Implemented GMS reliable multicast
Implemented a new method of multicast by implementing a protocol similar to TCP on top of UDP, which lacks reliability, to take advantage of the strengths of UDP (to enhance performance) and TCP (to enhance reliability).
If use-virtual-multicast is set to false, use reliable multicast.
Supports lightweight server using on/off on each engine
Provides a function to run a specific engine using an on/off function.
Added an engine lazy initialization function
Required engines are checked according to the application type. Any uninitialized engines are now initialized and then deployed.
Added option that stops servers on the local machine when NodeManager stops
Added function that is used when NodeManager is registered as an OS service such as a Windows service.
The function is executed by adding the -stopServer option to the NodeManager stop command so the server can stop before NodeManager stops.
Server, which is stopped by the –stopServer option, can start when NodeManager boots.
Added function to run DAS when NodeManager starts
By using options, such as username, password, domain, and server, DAS can start when NodeManager starts.
Added function to change the NodeManager type
To change the NodeManager type in Fix#1, the NodeManager must be removed and then a new NodeManager must be created with the desired type. However, in Fix#2, a command that changes between the SSH and JAVA NodeManager types was added.
Added a DAS backup function
Added function that automatically backs up the domain configuration when DAS is booted (backup directory can be specified).
IP, port, and node information can be modified when the backup file is unzipped in another node.
Added function to completely shutdown NodeManager when NodeManager stops
Added function to completely shutdown NodeManager by reading information in the jeusnm.properties file when NodeManager stops.
Added property to ignore ClassNotFoundException during deployment in Shared Class Loading mode
Added property to complete deployment even if class loading, which was called by loadAllClasses, fails due to ClassNotFoundException during deployment in Shared Class Loading mode.
The default value of the jeus.deploy.ignore-not-found-classes system property 'false'.
Added function to support Transaction Propagation in TCP remote call, which does not use EJB
Added to support InfiniLink.
Added ReadOnlyRole
Added ReadOnlyRole, which can display all items (Navigation possible) but cannot edit (action impossible).
Added WJP version 2 (WebtoB JEUS connection protocol version 2)
When a client sends a HTTP request body in chunks, WebtoB sends each chunk to JEUS as soon as it arrives.
When a HTTP request body to be sent by a client is large, the client connection can be lost while sending the request. Since JEUS cannot determine if the client connection is lost, the Servlet waits for the request Body until timeout occurs. To prevent this situation, WebtoB has the NotifyClientClose option. Even without this option, WJPv2 lets JEUS know that the client connection is lost, and JEUS sends an IOException to Servlet.
Helps to more efficiently process JEUS Dynamic content cache in WebtoB.
When session routing is performed in WebtoB, the total number of sessions created in the JEUS server can be received from JEUS and referred to. (PING configuration in WebtoB is required: WebtoB SvrChkTime)
Supports JEUS WebtoB SSL communication
Added function to support SSL to enhance communication security between JEUS and WebtoB installed on the same system or on separate systems.
Supports a WebtoB-JEUS SSL connection from WebtoB 4.1 SP6 Fix#0.
Added system property that refrains from processing a header with whitespace as a multi line header
Added option that ignores any whitespace preceding the HTTP header so it is not considered a Multi Line Header.
The default value of the "jeus.servlet.http.ignoreMultiLineHeader" property is false.
Supports Servlet 3.0 Multipart ProgressListener
From Servlet 3.0, multipart-config can be set for each Servlet, which allows the web container to handle multipart/from-data of a POST request. ProgressListener can be registered to receive events about the handling progress.
Added function to search for the default Servlet in Spring.
Added function to call the default Servlet even if <mvc:default-servlet-handler/> is set in Spring.
Added function to configure webcommon.xml and web.xml for each server
Added function to configure webcommon.xml and web.xml for each server.
The function adds configuration files to DOMAIN_HOME/config/servlet/SERVER_NAME/.
Added option to prevent the function that only compiles JSP when the JSP is called
In the JSP specification, there is a function that compiles JSP without calling JSP when JSP is called by using "http://[IP:Port]/index.jsp?precompile=true". However, this function is rarely used. To reduce precompilation parsing overhead that occurs whenever JSP is called, the jeus.servlet.jsp.precompile option, which prevents this function, was added.
Added command to determine the state of the WJP (WebtoB-JEUS) connection
Added the list-webtob-connections command. (alias: lswjp)
Server name and webtob-connector are required options.
Added function to configure the response version according to the HTTP request version
The jeus.servlet.response.force-response-10 option was used to respond to a HTTP 1.0 request with version 1.0. The added function selects the HTTP version automatically, depending on the request, to prepare for HTTP 2.0.
Added configuration to send the Connection: keep-alive response for a specific error status
Added function to attach 'Connection: keep-alive' to the header for the configured error code. The function adds the keep-alive-error-response-codes configuration to jeus-web-dd.xml (Default value: 404).
Added <client-override> to request-encoding configuration
Added the <client-override> option, which sets encoding to a lower priority than the Servlet API but to a higher priority than the charset configured in the Content-Type header of the HTTP request.
The <client-override> configuration has the same meaning as the <forced> configuration of JEUS v7.0 Fix #1 (and earlier).
Added the WebtoB backup function
Added function to run the backup when the main WebtoB malfunctions.
Added the keep-alive-timeout function to HTTP Listener
Added function that removes clients that do not send a request for a specific time even though the clients are connected to HTTP Listener in keep-alive mode.
Follows the <keep-alive-timeout> operation of Server Listener, and does not run when <use-nio> is false.
Added JEUS v6.0 to v7.0 Upgrade Tool
Newly configures JEUS 7 domain by selecting the nodes to be migrated from JEUS 6.
JEUS 6 does not contain a domain, so JEUS 7 Domain and DAS are created with default settings.
Uses JEUSMain.xml, WEBMain.xml, EJBMain.xml, and JMSMain.xml, which are used to configure each JEUS 6 node, to create domain.xml for the migration.
Each Engine Container of JEUS 6 is migrated into a Managed Server of JEUS 7. The configuration for JEUS Manager is not migrated.
Creates a MS, which corresponds to additionally configured Context Groups, when two or more Context Groups are configured in an Engine Container.
When multiple JEUS 6 nodes are migrated, export-name, data-source-id, and application-id can be duplicated. Duplicated values must be manually checked and modified.
Added option for commands that can be concurrently executed
Added a concurrent option to the deploy, distribute, start, stop, and undeploy commands that can be concurrently executed.
Added commands to check the list of patch files applied to a server
Added function to check the list of patch files applied to each server by adding the -patch option to the system-info command.
Added the class path option to the appcompiler command
Added function to specify the class path referred to by the EJB when the EJB is compiled by appcompiler.
It can be specified using the –clp option.
Added tool to create jeus-web-dd.xml. (webddgen)
Added tool to create or update the jeus-web-dd.xml file of the application when an application file is received as an input value.
Supports Apache Maven Plugin
Supports the Maven Plugin for JEUS 7.
Supports the start-das, start-ms, install-app, and uninstall-app commands.
Added a jeusadmin option and commands
Provides an option that outputs a summary when executing the thread-info (ti) command.
If there are a large number of WebEngines and WebEngine groups, it is difficult to quickly understand the result of executing the ti command in jeusadmin. The option displays an output summary.
Added function to monitor the system thread pool status.
Added a command to monitor the JEUS internal system thread pool status.
Displays the status, whether it is active, the name, the tid of all threads that exist in the pool when the command executes, and the pool information (name, min, max, current, work queue size, and remaining work queue size).
Added the remote server log transfer function.
Added a command to import a log recorded at a specific point in time at a specific size from a specific server.
Added function to copy a server configuration
Added the -duptargetserver option to add-server to allow a user to copy the settings of an existing server when a new server is added.
Added function to configure Log Home for each server
Specifies the default path of server logs.
The path also applies to the path in which rotated backup logs are created.
Added function to configure NodeManager log
Added function to configure NodeManager log files.
Supports the IBM Power Linux platform
Supports the JEUS installation on the IBM Power Linux platform.
Added the connection validity check function using java.sql.Connection#isValid
Added the connection validity check function using java.sql.Connection#isValid, which was added in JDK 1.6 and JDBC 4.0.
To check connection validity, the isValid method can be used (like “use isValid method”) instead of check-query. check-query-timeout is used as timeout.
check-query-period, non-validation-interval, and check-query-destroy-policy operate in the same way as check-query.
This section specifies changes in each module.
The GMS of a node and the GMS of a domain is now a single GMS
The GMS managed in the domain level and GMS managed in the cluster level were integrated into a single GMS in the domain level.
Modified the lifecycle invocation function
To support InfiniLink, the lifecycle invocation can now be configured in the domain and a cluster.
Reduced network traffic when a configuration is modified
The activate task, which uses a single Mbean Call to call Observer in the server, the transferring task, which sends the file to the server, and the LoadConfiguration task, which loads the file from the server, are performed when the configuration is modified and applied.
A server in the FAILED state can be started with a command
Even when a server fails, NodeManager can use the start-server command.
When DAS fails to shutdown MS, NodeManager kills the MS
Even if the DAS sends the MS shutdown command, MS may not respond due to OOM or a network problem or MS may not shut down until timeout. If any of these events occurs, NodeManager kills the MS.
Windows does not support this process.
One domain supports Java NodeManager and SSH NodeManager concurrently
Fix#1 only supports the use of one type of NodeManager, but in Fix#2, both types can be used concurrently.
Added option to allow servers to be booted consecutively in the domain
In Fix#0, servers start in sequential order, in Fix#1, servers start concurrently, but in Fix#2, the starting method can be chosen.
Application Resynch has an option
If an independent MS joins a domain managed by DAS, applications in the domain are automatically resynchronized, which can cause an issue for servers currently running.
Added the enable-to-resynchronized-applications option (default value: false) so applications are not automatically resynchronized when an independent MS joins a domain managed by DAS.
Extended External Resource and Custom Resource function
External Resource and Custom Resource, which were configured for each server, have been modified so they are configured for each domain and overridden in the server.
Username and password cache information used by Java-typed NodeManager is encrypted
The cache file used by the Java-type NodeManager is now encrypted with AES to enhance security.
Added option to determine whether to restart MS with a failure
When DAS detected a MS with a failure, it restarted the MS unconditionally. Now, restarting the MS is optional.
A password is no longer displayed when the ps command is executed
A password entered with the -p option is no longer displayed when the ps command is executed for a server process.
If a server fails to shut down, its status becomes DOWN_FAILED
When a server fails to shut down, its status changes to DOWN_FAILED, not to the previous status.
If the server status becomes DOWN_FAILED, commands to start and stop the server become available.
When an application is deployed with a specific path, application-id can be set
When the same exploded module type application is deployed to multiple servers, different context paths can now be set for each server.
When an application is deployed, the default application type is WebModule
When an application is deployed without specifying a type, the default type is WebModule.
Supports graceful redeployment for exploded mode applications
Graceful redeployment is now supported for exploded mode applications.
Added option to determine whether to concurrently deploy EAR modules
Whether to concurrently deploy EAR modules is optional.
Modified the redeployment policy
The redeployment policy was modified in the following cases: when an application file is located in APP_HOME, when an application file or a directory is in a repository, and when a file to deploy or a directory is specified using the -path or -dasPath option.
Improved deployment performance
Deployment of an application to multiple MSs is improved.
Improved accesslog performance
Removed %l (an unnecessary option) and %u (request.getRemoteUser()) options from the default log.
Changed the location in which derby.log is created
derby.log is now created in the log directory of each server when embedded derby is used.
Servlet I/O buffer tuning
Optimized performance when an application writes a byte array that is larger than output-buffer-size.
WebtoB buffer tuning
Improved the buffering function for response data received from JEUS. Modified to reuse the message read buffer and to immediately send a client as much data as was read.
JEUS cannot execute the command to suspend WebtoB
When one WebtoB connects to multiple JEUS servers, it cannot be suspended by one of the JEUS servers. The command to suspend WebtoB is no longer available.
default-error-page can be set to a relative path
default-error-page of an web engine can now be set by a relative or an absolute path.
When default-error-page is set to a relative path, the path is based on $DOMAIN_HOME/config/servlet/<server-name>.
Excluded JSF RI from the classpath
JSF RI in JEUS_HOME/lib/shared is no longer added to the classpath unless it is explicitly specified in jeus-web-dd.xml.
Returns the 503 error when the http-listener queue is full
Connections are forcibly disconnected when a HTTP or AJP13 queue is full. However, if the http-listener queue is full, the 503 error (service temporarily unavailable) is returned.
Added option to determine whether to add proxy-specific headers to a HTTP request when JEUS reverse proxy is used
Unlike WebtoB, JEUS reverse proxy, which adopted Tomcat implementation, unconditionally adds 'via', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-server', and 'accept-encoding' to a request header. These items can now be optionally added.
Changed the location in which blocked URL patterns are configured
Blocked URL patterns are now configured in domain.xml/web-engine instead of urlblocking.properties.
A Servlet URL pattern registered with annotation and registration API is decoded
A Servlet URL pattern to be registered with annotation and registration API is now decoded, like in Tomcat.
Changed the default value of output-buffer-size
Changed the default value of output-buffer-size to the socket send buffer size of each OS.
Removed the web.xml file provided at domain level when JEUS is installed
Servlet 3.0 supported by JEUS v7.0 allows a web application to be deployed without web.xml. Therefore, web.xml was removed.
Changed the priority of webtob-ipcbaseport and use-pipe configurations in Windows
If disable-pipe is true (use-pipe is false), a connection is unconditionally established to a socket instead of ipcbaseport.
If disable-pipe is false (use-pipe is true), a connection is established to ipcbaseport.
Context-based path is returned when an invalid file or directory is specified in ServletContext.getRealPath()
If a file or directory that does not exist is specified in ServletContext.getRealPath(), a context-based path is returned instead of NULL.
Changed operation when enable-jsp is false
If JSP is called when enable-jsp is set to false, the 503 error (service temporarily unavailable) was returned. Now, JSP is treated as a resource.
Changed operation when AJP13 listener receives a request without a body, or JEUS sends a body as a chunk to a client and reads the body
If AJP13 listener receives a request without a body or if JEUS sends a body as a chunk to a client and reads the body, -1 is returned. EOFException occurred in previous versions.
Changed the JNDI message protocol
When a JNDI connection is established, any security information that is unnecessary is no longer exchanged when version information is reused after authentication.
The jeus.jndi.compat option must be configured for backward compatibility.
Improved performance when sharing InitialContext
When InitialContext is shared, synchronization is no longer performed to allow parallel processing, which improves performance.
Optimized the process for sending and managing a transaction
Integrated the two internal stages of 'prepare' ('beforeCompletion' and 'prepare') into a single stage, which improves performance.
Maintains backward compatibility without special configurations.
JEUS can normally boot even if a TM log file is broken
When the first JEUS TM log is removed, JEUS no longer fails to boot. If jeus.tm.ignore.broken.log.file is set to true, the removed log is regarded as an error, the broken TM log file is removed, and JEUS normally boots.
If the second JEUS TM log is removed, this is not regarded as an error. The TM log file is removed and JEUS normally boots.
If the log files cannot be deleted, JEUS fails to boot and a message indicating that the files must be deleted is displayed.
Changed the available DataSource when a server is included in a cluster
In Fix#0, when a server is included in a cluster, the server can use both its own DataSource and the cluster DataSource. In Fix#1, the server DataSource could no longer used and only the cluster DataSource could be used. In Fix#2, both DataSources can be used like in Fix#0.
Supports failover and failback for the cluster DataSource using ONS
When an Oracle database is used, failover and failback for a cluster DataSource are supported by receiving a DB failure or revival notification through ONS.
Changed the default binding method for a DataSource
Changed the binding method to locally bind a DataSource to a target server by default.
Improved WebAdmin performance
MS performance no longer dramatically decreases when the number of MSs increases.
User password is no longer saved in a browser
The ID and the password entered during login are no longer saved in a browser that supports HTML5.
Displays a warning message when a lock is reacquired
When reacquiring a lock that was released outside, a warning message is displayed because relevant modified information is lost.
Disabled unnecessary links and buttons on the Runtime Info popup window
Unnecessary links and buttons on the Runtime Info popup window can be no longer clicked.
Added function to check the subject status after executing lockuser/unlockuser
Added a function to check whether the current subject status is lock or unlock after executing lockuser or unlockuser for the subject.
multi-thread-context cannot be used in a single JMS session
Multiple threads can no longer concurrently access a single JMS session. An exception is thrown to the client.
Changed the EJB class naming rule
The Bean name is now applied to the names of HomeImpl and ObjectImpl classes, which were created by JEUS.
Changed Windows services
Modified Windows service functions to meet the JEUS v7.0 structure. (Operation of the service itself is the same as in previous versions.)
Reduced network usage of a session server
Optimized the internal communication of a session server to reduce network usage.
Changed JEUS Session Manager operation under heavy load
If connection failures continuously occur, or if applications are not deployed when MS restarts after a connection failure, a client request is not sent to the session server.
When a connection failure occurs, the number of selector threads no longer continuously increases.
When session backup occurs under heavy load, the http service can be handled first using an option to improve response performance.
This section describes bug patches by module.
Fixed: Prolonged EAR deployment when many JAR exist.
Previously, whenever JAR (EJB module) was deployed, all class lists of its archive were registered in the class loader. Now, when all EJB modules are deployed, registration takes place once in EAR, which reduces deployment time.
Fixed: Directory mode module not detected when EAR does not have application.xml.
Fixed: Annotation information not overrided to DD information when ejb-local-ref is configured in EJB DD.
Fixed: Deploying to all servers when being deployed to all targets.
Fixed: If redeployment fails, rollback to old applications is not successfully executed.
Fixed: Unconditionally recognized as JSP 2.3 if web.xml does not exist.
Fixed: Value configured in jsp-engine of the domain.xml is changed to the default value when some function of jsp-engine is set in jeus-web-dd.xml.
Fixed: When two different JSP files refer to the same tag file, a class file is being sought for one JSP file while the tag file is being compiled in the other JSP file.
Fixed: The compilation bug that occurs if a Java file is in WEB-INF/class, when compiling in-memory-jsp.
Fixed: The jeus.servlet.out.ensureContentOrder configuration is not applied.
The option to guarantee the order between ServletOutputStream, the response writer, and JspWriter (used in JSP) is now applied.
Fixed: The encoding, response-encoding, and force configurations are not applied when calling response.setCharacterEncoding().
If encoding, response-encoding, and force are configured in domain.xml and jeus-web-dd.xml, the encoding configuration set in setContentType(), setLocale(), and response.setCharacterEncoding() must be ignored. However, the configuration set in response.setCharacterEncoding() was not ignored. This bug is fixed.
Fixed: When no charset configuration exists in a content-type response header, charset must not be configured but is set to ISO8859-1.
Fixed: The <response-encoding><default> configuration set in jeus-web-dd.xml does not replace the <response-encoding><forced> configuration of domain.xml.
Fixed: The ParentServlet configuration is used when both ParentServlet and ChildServlet exist in Servlet 3.0.
Fixed: <error-page> configured in web-fragment.xml is not applied.
Fixed: remoteUser, userPrincipal, and authType are not correctly configured in HttpServletRequest.login() and logout().
Fixed: In Servlet 3.0, security configurations apply to Servlet without ServletSecurity annotation so the ResourcePermission function operates.
Fixed: Servlet without @ServletSecurity unconditionally tries to execute security-related tasks for all requests so “/” is added to ResourcePermission.
Fixed: No error occurs when two or more context-params with the same name but different values exist in web.xml.
Fixed: Classes are imported if a package is not specified when the extends attribute is used in JSP.
Fixed: Multiple parameters in Content-Type do not apply because parameters used after the charset parameter are assumed to be encoded.
Fixed: When jeus.servlet.jsp.reload is set to false, <check-included-jspfile> is not applied after the server boots or the context reloads.
Fixed: A filter is not applied when welcomefile for a request with a URI ending with '/' is processed.
Added the jeus.servlet.filter.applyOnWelcomeFileRequest option to fix this bug.
The default value is true. If set to false, a filter for welcomefile is applied.
Fixed: Transfer-Encoding:Chunked and Content-Length headers are concurrently sent when reverse proxy is used.
Fixed: The HTTP listener always treats HTTP 1.1 connections as KeepAlive.
Fixed: After graceful redeployment, the order of calling old and new applications is not guaranteed because multiple session IDs (web browser tab function) are not taken into consideration.
Fixed: The jeus.servlet.ensure.contentlength option set in jeus-web-dd.xml is not applied.
Fixed: When the XML export function is used, special characters such as (“) is automatically escaped and displayed.
Fixed: Characters entered in a text field are automatically escaped and rendered.
Fixed: When a text field such as a field for a JVM option or an XML export function is used, characters (such as “ and &) are automatically escaped and rendered.
Fixed: The encoding configuration is not correctly applied to the error page.
Fixed: A file lock cannot be obtained in HP-UX.
Fixed: When an application is concurrently deployed to multiple MSs, the lock permission is denied in HP-UX.
Fixed: NodeManager fails to boot when a wrong state is written in the serverName.state file.
Fixed: NodeManager fails to boot because an exception occurs when a user modifies the serverName.state file or the file contains an empty string.
Fixed: License check is unsuccessful when a server boots using NodeManager.
If the license is expired when a server boots using NodeManager, the server fails to boot.
Fixed: An exception occurs when calling EJB using IIOP in IBM JDK 7.
The bug was eliminated by updating the Glassfish Corba library to the newest version.
Fixed: If NodeManager is configured in a server using the node option for the add-server command, the server status displayed as the result of executing the serverinfo command is UNKNOWN.
Fixed: Information displayed as the result of executing the list-nodes command is incorrect when Java NodeManager is used.
Fixed: The "Under control" and "JEUS version" values displayed as the result of executing the list-nodes command are incorrect.
Fixed: Console commands that retrieve configurations obtain an unnecessary lock.
Commands that retrieve various configurations no longer obtain a lock and display the result information configured in XML configuration files.
Fixed: A system property given as an argument in the command line is not applied.
Fixed: Runtime listener information is not displayed when executing the server-info command.
Fixed: A cluster is not properly added or deleted because of the incorrect order of queries for adding or deleting the cluster.
Fixed: javax.naming.ServiceUnavaliableException occurs when getting home stub to lookup cluster EJB.
ServiceUnavailableException occurs when a server to lookup is not alive. Since the exception is not failed over, JNDI failover is now used.
Fixed: WebService transactions do not operate between separate server systems.
Fixed: The HTTP port used in WebService is used as the WebtoB port when WebtoB is configured in the JEUS server.
Fixed: An error related to CN information occurs when configuring SSL mutual certificates.
Fixed: If CN is not set to localhost when configuring SS mutual certificates, "java.security.cert.CertificateException: No name matching localhost found" occurs during runtime of the wsimport tool (provided by the JEUS web service) and a client.
Fixed: The cluster listener required by JNDI is not registered/unregistered when dynamically adding/deleting a cluster.
Fixed: NPE occurs if load is given to a task for looking up and closing a cluster context.
The context map about cluster contexts created in each thread is shared. When attempting to use a closed context, NPE occurs.
Fixed: ClassNotFoundException occurs when a custom class is used.
Fixed: ClassNotFoundException occurs because the ClassLoader that loads the custom class defined in an application differs from ContextClassLoader of the thread that executes onMessage() of MessageListener.
Fixed: JMS deadlock issue occurs.
Fixed: Deadlock occurs when the process of closing JeusPooledConnection and the process of deleting JeusPooledConnection of JeusPooledConnectionFactory require a lock currently being used in the other process.