Chapter 3. JEUS v7.0 Fix#2

Table of Contents

3.1. New Functions
3.1.1. WebAdmin
3.1.2. Session Server
3.1.3. Server
3.1.4. Deployment
3.1.5. Transaction
3.1.6. Security
3.1.7. WebEngine
3.1.8. Tools
3.1.9. Logging
3.1.10. Installer
3.1.11. JDBC
3.1.12. JMS
3.2. Updates
3.2.1. Server
3.2.2. Deployment
3.2.3. Logging
3.2.4. WebEngine
3.2.5. JNDI
3.2.6. Transaction
3.2.7. JDBC
3.2.8. WebAdmin
3.2.9. Security
3.2.10. JMS
3.2.11. EJB
3.2.12. Tool
3.2.13. Session Server
3.3. Bug Patches
3.3.1. Deployment
3.3.2. WebEngine
3.3.3. WebAdmin
3.3.4. Server
3.3.5. EJB
3.3.6. WebService
3.3.7. JNDI
3.3.8. JMS
3.3.9. Logging

This chapter describes the new functions and the changes made to JEUS v7.0 Fix#2.

This section describes the new functions of JEUS.

  • 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 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.

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.

  • 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.

This section describes bug patches by module.

  • 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: 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.