Chapter 4. JEUS v7.0 Fix#1

Table of Contents

4.1. New Functions
4.1.1. Deployment
4.1.2. JMS
4.1.3. Node Manager
4.1.4. Server
4.1.5. Web Engine
4.1.6. Tool
4.1.7. WebAdmin
4.1.8. WebService
4.2. Modified Functions
4.2.1. Deployment
4.2.2. Domain (DAS)
4.2.3. EJB
4.2.4. JDBC
4.2.5. JMS
4.2.6. JNDI
4.2.7. Security
4.2.8. Server
4.2.9. Transaction
4.2.10. Web Engine
4.2.11. Session Server
4.2.12. Tool
4.2.13. Transaction
4.2.14. WebAdmin
4.2.15. CDI
4.3. Bug Fixes
4.3.1. Deployment
4.3.2. EJB
4.3.3. Server
4.3.4. Web Engine
4.3.5. Transaction
4.3.6. WebService
4.3.7. CDI

This chapter briefly describes the functions added in JEUS v7.0 Fix#1.

This section describes the new functions of JEUS.

  • Added a function that allows applications to be installed/deployed/undeployed/started/stopped simultaneously.

    • A list can be used to install applications (the ID cannot be given).

    • Various application files be can selected and installed in WebAdmin.

    • A list can be used to deploy applications.

    • Various installed applications can be selected and deployed in WebAdmin (The deploy option of selected applications are uniformly applied).

    • Although installation is not supported in list form in jeusadmin, installation is possible in the list form by checking the checkbox when installing from WebAdmin.

  • Supports a deployment plan function of EJB, Web, and EAR.

    • Inside the application package, regardless of the JEUS DD file, the function that deploys applications located outside of the package as an arbitrary plan is supported.

    • In WebAdmin, a deployment plan management function and a plan option to deploy/distribute/redeploy are provided.

    • When using the deployment plan function, DD can be replaced with "Plan".

    • In jeusadmin, by merging the existing domain.xml with the configuration plan, a command that creates a new domain.xml is provided.

  • Added a function that compresses and transfers exploded applications.

    • Added a staging option that can compress and transfer exploded applications.

    • The function can compress an exploded application that is then transferred to a server and deployed. The function works inside the DAS and by Remote MS, and the exploded application is matched according to its type.

    • Does not take responsibility of the synchronization of an application's original file. Therefore, when modifying an application, redeploy must be performed explicitly.

  • Added a function that concurrently executes JEUS boot time deploy by group units.

    • The function can deploy applications when Boot Time and Runtime are deployed.

    • For EAR, internal modules can now be concurrently deployed.

  • Added the rolling patch function, which rolls back the configuration backup.

    • Through the node manager, the function can apply/delete a patch to/from the doman and check the patch information.

    • When applying/removing a patch, if the -rolling option is given, a redundant service can be done without error.

    • When an error occurs during a rolling patch, three options (continue, rollback, and stop) are supported.

    • A screen for the rolling patch has been added to WebAdmin.

      From the backup configuration list, a backup can be selected and used to roll back the configuration.

      (The rollback must be performed with the WebAdmin lock. The configuration rolled back must be activated to be applied.)

    • Commands related to the rolling patch have been added to jeusadmin.

  • Added a function that boots a server to standby status.

    • When a server newly added during operation is booted to running status, errors can occur if the server immediately receives a request from a client. To prevent these errors, the function that boots the server only to the standby status (-standby option) has been added.

    • If a newly added server is added to the target of the application through the add-Application-target command, and the server is then started, the application request can be processed without failure.

  • Added a function that creates HeapDump for when JEUS memory usage exceeds the ratio in the memory monitoring service.

    • Executes the jmap command in JEUS and uses the HeapDump creation command to leave the file name as HeapDump_yearmonthdaytime.bin and the log file as $SERVER_HOME/logs.

    • Because IBM JDK does not have the jmap command, the jvm-option must be configured with the same properties as -Xdump:heap:file to create HeapDump.

  • Added the WebAdmin background deploy function.

    • The function deploys a fake WebAdmin during boot time to improve speed and starts the real WebAdmin through a graceful redeployment in the background.

  • Added a function that allows an administrator to control access to WebAdmin without shutting down a server.

    • The function can dynamically apply the command when the disable-WebAdmin/enable-WebAdmin command is performed in jeusadmin.

  • Added the CPU Monitoring Service and the Process CPU Monitoring Service for a server.

    • Added a function that monitors the CPU utilization of a server's CPU and process.

    • Uses the "jeus.server.cpumonitor.enabled=false" flag to configure the availability of the server's CPU monitoring cycle, and sets jeus.server.cpumonitor.interval=60000.

    • The jeus.server.process.cpumonitor.enabled determines if monitoring of the current process' CPU utilization is monitored, and jeus.server.process.cpumonitor.interval configures the monitoring cycle.

    • It is recommended that this function be used only in Sun JDK.

  • Added a function that can insert an option before the Java command that starts a MS during MS start-up.

    • When configuring domain/servers/server/user-interceptor/preceding-command of the domain.xml file, and the MS is started, the option is added to the front of the foremost JAVA command.

    • When XXX is added to preceding-command, the command is configured in the "XXX java ~~~" format.

  • Added the sys-info command to provide additional system information through JVMMBean.

    • The process, CPU, memory, and the JVM information can be viewed in sys-info. The command also provides additional information by utilizing the SIGAR library, which is open source.

  • Added the production mode configuration function

    • Added a function that can separate the development mode and the production mode by classifying functions that can affect development productivity, performance, and memory leak.

  • Added commands that modify the server address and the port number in the jeusadmin (modify-webtob-connector and modify-tmax-connector).

  • Added a function that displays the statistics and status of the thread pool (async background thread pool, async dispatch thread pool) for asynchronous processing, which carries the application if a web application name with the thread-info command is added.

  • Added a function that blocks memory leaks and OOME when using the threadlocal variable in an application.

    • A memory leak increases the possibility of an OOME (especially in situations where ContextLoader or WEBAPP instance are held in ThreadLocal, when undeploy/deploy/reload are performed, memory leak can occur). A memory leak can occur when the ThreadLocal variable is used in applications.

    • In the web engine property (<web-engine>/<properties>), the key (jeus.servlet.prevent-forcibly-threadlocal-memoryleak) is specified by a boolean value (true/false).

  • Added a function in jeusadmin that allows the entire stack trace of a specific web listener thread pool to be checked.

    • Added a function in jeusadmin that allows the entire stack trace of a specific web listener thread pool to be checked.

    • The following is how the function call.

      strace -server [ServerName] -li [Listener-Name]
  • Added the interrupt function for the entire web listener thread pool.

    • The function can interrupt the entire web listener thread by providing the -li option to the interrupt-thread.

  • Added a function that provides the SSL client certificate information received from WebtoB.

    • Through the function added in WebtoB 4.1.5.2, when WebtoB sends SSL information as an HTTP header named "WJP-SSL-SESSION-ID WJP-SSL-CIPHER WJP-SSL-CIPHER-USEKEYSIZE WJP-SSL-client-CERT" to JEUS, JEUS read this and supports it through HttpServletRequest#getAttribute().

  • Added a function that records the thread stack trace in a log when an interrupt to active threads, which passed max-thread-active-time, occurs.

  • Added a function that creates a new server by copying the configuration of an existing server.

    • The server name, node-name, and listen-address listen-port use the existing configuration if there is no new input. Errors can occur when booting, and if a name is not specified, an arbitrary name is automatically inputted.

  • Added add/modify/delete commands to the web engine configuration.

    • Commands related to the following were added.

      • add/modify/remove commands: encoding, properties, response-header, and cookie-policy.

      • modify command: jsp-engine.

      • modify-web-engine-configuration option: default-error-page, attach-stacktrace-on-error, and async-timeout-min-thread.

  • Added the Ant Task function

    • The function uses an Ant Task to start/shut down DAS/MS when using the node manager.

    • Added deployment related tasks (install, deploy, start, stop, undeploy, redeploy, uninstall, addtarget, removetarget).

  • Added jeusadmin commands

    • Added commands that can add/modify/delete JVM options in a MS.

      The commands can add/delete/modify the option configured in server/jvm-config/jvm-option. However, if the existing configuration information does not completely match the jvm-option tag unit of domain.xml, the specified command is not executed.

    • Added a command that decides whether to turn on/off the usage of JEUS Logger.

  • Added a function that checks the appinfo in an independent MS.

    • Added a function that allows appinfo to be checked through application-info in MS (same as DAS) when the MS is in INDEPENDENT mode.

  • Added an option that allows just EJB or the web to be selected when precompiling EAR in appcompiler.

    • Added an option that allows just EJB or the web to be selected when precompiling EAR in appcompiler.

    • EJC and the web module can be selected with the -ejbonly and -webonly options, respectively.

  • Added a function that allows the use of multiple threads for compilation when JSP is compiled using appcompiler.

    • By using appcompiler, the number of the threads used to compile JSP files can be adjusted by the –j option. (Default value: 1)

  • Added a monitoring page for the system-info command.

    • Monitors CPU/Process/JEUS Memory/JEUS JVM information.

    • Automatically refreshes at 10sec/30sec/1min intervals.

  • Added a function that inputs comments about modified information when activating domain configuration changes. (<domain>/<description>)

  • Added the environment file export/import function.

    • Added the export function, which can download the domain.xml currently viewed by the user in WebAdmin as XML, and the import function, which applies the domain.xml modified by the user. However, the import function can only be used in the lock & edit mode.

  • Added the file navigation tag

    • Added a function that can select the system file of the server that WebAdmin is deployed in.

  • Added the JMS message view function

    • Added the message view function, which enhances the JSM monitoring function.

    • Provides the view, edit, import, remove, move, and export functions for messages in the JMS monitoring screen of WebAdmin.

    • Provides the view, edit, import, remove, move, and export functions for "destination" and the suspend and resume functions for produce/consume.

    • Provides additional view, remove, move, export, and cluster functions.

    • When editing, the JMS message view function is only enabled when messageType is "text".

  • Added the WebAdmin UI access control function, which requires proper authority.

    • Added a function that restricts access to the WebAdmin UI function by using the role permission configuration.

    • The URL, main menu, and sitemap are in the access control list. Depending on the permission type, a part of the main menu can be omitted when logging in.

  • Added Async Thread Monitoring.

    • Added the async thread monitoring function to WebAdmin.

This section describes the module-specific changes of JEUS.

  • ResourceServlet can be used in Spring mvc:default-servlet-handler.

    • jeus.serblet.servlets.ResourceServlet (default servlet that replaced WorkerServlet) can be configured to default-servlet-name in Spring mvc:default-servlet-handler.

  • Changed the default value of Servlet Async Processing Timeout to 30 seconds.

    • Async processing is the period for which AsyncServlet runs. If AsyncServlet is not terminated within this time, the thread is terminated.

  • Added the options (dsocket, wbhome, ipcport) related to the Doman Socket to the add-webtob-connector commands.

  • The <scheme> tag, which was unnecessarily configured in the Web Listener configuration, is removed.

  • Improved the processing method of the request processing queue for HTTP, TCP, and AJP listeners when NIO is used.

    • When NIO (use-nio=true) is used, if the request processing queue is full in HTTP, TCP, and AJP listeners, the connection is closed and WARNING level messages are recorded in the server log.

  • Removed the keep-alive configuration for HTTP Listener.

    • The keep-alive configuration of the HTTP Listener was replaced with the connection-type configuration.

  • Added the period setting function, which checks stuck threads.

    • Added the period setting function, which checks stuck threads. The function is configured under <server>/<system-thread-pool>, and the default value is 5 minutes.

  • Removed the "max-wait-queue" and "step" configurations, which depend on the thread pool implementations used in the web container.

  • Added a configuration that allows dynamic changes in the web engine.

    • Items can be dynamically added and deleted in a virtual host.

    • The host name of the virtual host can be dynamically added and deleted (displays a warning message that states that 404 error can occur when deleted).

    • Extended the web-connections dynamic configuration changes (for tcp and tmax, dynamic changes are only possible when dispatch-config-class can be loaded).

    • For web-engine configurations, the number of configurations that can be dynamically changed is increased.

      • New web connections (excluding TCP listener and the Tmax connector).

      • Modified the minimum and maximum number of the threads in the thread pool of the web listener.

      • Modified the monitoring cycle of the web engine.

      • Changed the accesslog on/off and the log format of the web engine.

  • Supports the AJP13 SSL attribute.

    • If the export configuration of the client certificate, such as Apache and modjk, is configured, information, such as the client certificate and SSL Cipher, can be received through JEUS.

  • Deleted the use-pipe configuration from webtob-connector configurations.

    • The use-pipe configuration, a webtob-connector configuration, was deleted. (If the domain-socket-address configuration exists, PIPE is used.)

  • JSP files can be compiled in memory (in-memory jsp compilation).

    • Modified so that when a JSP must be compiled, ".java" and ".class" files are not created in the service thread, instead, JSP files are created as a class in memory.

    • ".java" and ".class" files are written in the file system by using the background thread. However, when ".java" fails to compile a JSP file, the .java file is written on the file system by using the service thread.

  • Added a function that adds "connection: keep-alive" to the header when responding to a specific error status

    • If a status code is added to the <keep-alive-error-response-codes> tag of jeus-web-dd.xml by separating it with a comma, it responds to the configured status code with "connection:keep-alive".

  • long type content-length is used to support data transfers of over 2GB.

    • Content length of the int type is supported in the servlet standard. When the content-length header is set in the servlet, data of over 2GB in size cannot be configured.

    • The content-length configuration was modified to allow data of over 2GB in size to be transmitted.

The following section describes the bug fixes in each module.

  • Context path properties sent with requests from WebtoB are ignored.

    • Sending context path properties with requests from WebtoB to JEUS create problems when pages are called. The context path properties sent requests from WebtoB are now ignored (modified to operate in the same away as JEUS 6.0).

  • Fixed: In the default servlet (ResourceServlet), file names with whitespace cannot be serviced.

  • Fixed: When an application status is STOP, an error page is not displayed and NPE occurs.

    • When an application status is STOP, if there is a configured error page, the error page must be displayed. If no error page is configured, the 503 error page must be displayed. However, the error page was not displayed and NPE occurred. This bug is fixed.

  • Fixed: read-timeout of the server listener in the web listener is not correctly applied.

    • When the postdata-read-timout value is configured, the existing read-timeout value is modified to the configured postdata-read-timeout value. After the requests ends, read-timeout value was supposed to be restored to its original value, but was not. This bug is fixed.

  • Fixed: ServletResponse.getCharacterEncoding() is not returned to ISO-8859-1 by default.

    • When the character encoding is not configured, ServletResponse.getCharacterEncoding() not returns ISO-8859-1.

  • Fixed: postdata-read-timeout of the http-listener is not applied.

  • Fixed: ServletRequest.getRemotePort() implementation bug of AJP13 and WebtoB.

    • A regular remote port now returns the value ServletRequest.getRemotePort() previously returned (-1).

  • Fixed: Servlet Event Listener XXXDestroyed event bug

    • Destroy Event of ServletContextListener, ServletRequestListener, and HttpSessionListener now occur in reverse order to match the specification.

  • Supplements the max-keep-alive-request support in the HTTP Listener

    • When the HTTP listener is using blocking I/O, a client monopolizes the HTTP thread, which prevents requests from being processed. The maximum request count is restricted to prevent this bug.