Chapter 2. JEUS 8

Table of Contents

2.1. New Features
2.1.1. Changes in Specification
2.1.2. Servlet
2.1.3. Session Server
2.1.4. WebService
2.1.5. Security
2.1.6. Deployment
2.1.7. JMX
2.1.8. Server
2.1.9. Tool
2.1.10. Manuals
2.2. Changed Features
2.2.1. Server
2.2.2. Servlet
2.2.3. Session Server
2.2.4. EJB
2.2.5. Security
2.2.6. JMS
2.2.7. WebService
2.2.8. JNDI
2.2.9. Network
2.2.10. JMX
2.2.11. Logging
2.2.12. NodeManager
2.2.13. Transaction
2.2.14. JSF

This chapter briefly describes the new features added to JEUS 8.

2.1. New Features

JEUS 8 fully supports the essential features of Java EE 7 to enhance the development productivity. JEUS 8 uses various enhanced technologies to provide a more reliable environment.

2.1.1. Changes in Specification

JEUS 8 includes many new technologies and specifications.

The following shows the J2EE specifications supported by JEUS 5 through JEUS 7. For features corresponding to each specification, refer to each specification.

SpecJEUS 6JEUS 7JEUS 8
J2EEJava EE 5Java EE 6Java EE 7
WebServerWebtoB 4.1WebtoB 4.1WebtoB 5.0
HTTP1.0/1.11.0/1.11.0/1.1/2.0
CGI1.11.11.1
PHP3.x/4.x/5.x3.x/4.x/5.x3.x/4.x/5.x
SSLssl2/ssl3/tls1ssl2/ssl3/tls1ssl2/ssl3/tls1
WebSocket--1.0
Java API for JSON Processing--Supported
Batch Applications for the Java Platform--Supported
Concurrency Utilities for Java EE--1.0
EJB2.x/3.03.13.2
RMI-IIOPSupportedSupportedSupported
JAF1.0.21.11.1
EJB to CORBA Mapping1.11.11.1
JCA1.51.61.7
JMS1.11.12.0
Common Annotations for the Java Platform1.01.11.2
JPA1.02.02.1
JavaMail API1.41.41.5
JTA1.11.11.2
JTS1.01.01.0
JNDI1.2.11.2.11.2.1
CDI-1.01.1
Bean Validation-1.01.1
Managed Beans-1.01.0
Interceptors-1.11.2
JSP2.12.22.3
Servlet2.53.03.1
JSF1.22.02.2
JSTL1.21.21.2
XSLT1.01.01.0
JDBC3.04.04.0
IBM MQSupportedSupportedSupported
Sonic MQSupportedSupportedSupported
J2EE Management1.11.11.1
J2EE Deployment API1.21.21.2
JAAS1.0.11.0.11.0.1
JACC1.11.31.5
JASPIC-1.01.1
JAXP1.3(Part of Java SE 6)(Part of Java SE 7)
StAX1.0(Part of Java SE 6)(Part of Java SE 7)
JAXB2.12.22.2
SAAJ1.31.31.3
Implementing Enterprise Web Services1.21.31.3
Web Service Metadata2.02.12.1
JAX-RPC1.11.11.1
JAX-WS2.12.22.2
JAX-RS-1.12.1
JAXR1.01.01.0
UDDI2.0/3.02.0/3.02.0/3.0
SOAP1.21.1/1.21.1/1.2
WSDL1.11.11.1
WS-I Basic Profile1.11.11.1
WS-Policy1.01.01.5
WS-Policy Attachment1.01.01.5
WS-Addressing-1.01.0
WS-Security1.0/1.11.11.1
WS-Security Policy1.21.21.2
WS-Trust1.31.31.4
WS-Secure Conversation1.31.31.4
WS-Reliable Messaging1.01.11.2
WS-AtomicTransaction-1.01.2
WS-Coordination-1.01.2
OTSSupportedSupportedSupported
Java IDL APISupportedSupportedSupported
IDE ToolSupportedNot supportedNot supported
GUI ToolNot supportedNot supportedNot supported
Web ToolWebAdminWebAdminWebAdmin
Monitoring ToolConsole Tool, WebAdminConsole Tool, WebAdminConsole Tool, WebAdmin
JDK5/66 (Certified)7 (Certified)

2.1.2. Servlet

  • Cross-origin resource sharing (CORS) support

    • CORS is supported to resolve security issues that occur when you import external resources.

  • HTTP/2 (HTTP 2.0) support

    • HTTP/2 (HTTP 2.0) Protocol is supported.

  • Servlet 4.0 specification partial support

    • Server Pushes in the Servlet 4.0 specification are supported.

  • New jeusadmin command options

    • The Web listener command now includes the automatic tuning options.

      • The -tauto and -tlimit options are added to add-web-listener and modify-web-listener.

      • The new options take effect only for an HTTP connection.

    • Listener-related commands now support HTTP/2 options.

      • Options to enable the HTTP/2 protocol support are added to listener-related commands such as add-web-listener, modify-web-listener, and show-web-engine-configuration.

  • Option to identify case-sensitive file names

    • An option to enable a case-sensitive file system is supported. It resolves the issue that the file system is insensitive to letter case in a file name when a server cluster consists of both a Windows server and a Lunix server.

    • This option is sensitive to the letter case of a file name and indicates whether a file exists or not.

      -Djeus.servlet.useCaseInsensitiveFileSystem
  • jarscan.properties support

    • When a JSP program runs, a TLD file is scanned for in all JAR files in a specified claspath, most of which do not include a TLD file.

    • In response to such an inefficient scan mode, you could use a hard-coded option to select libraries which would be exempted from a TLD scan. This option is now replaced with an external properties file (JEUS_HOME/domains/jarscan.properties) that accommodates easy updates.

  • Option to disable URL encoding of a sticky session

    • A jsessionid rewriting of a sticky session in URL causes the character "=" in an engine name to be converted to "%3D," which affects session routing by WebToB.

    • To prevent this issue, an option is added so that the character "=" is not converted by default. In case you may want to encode the jsessionid, the jeus.servlet.allowUrlEncodeJesssionId option is supported. When set to true, it encodes the jsessionid.

  • Node Java support

    • Use this feature to register and manage servlets with which external services can be run.

2.1.3. Session Server

  • Option to update a session by attributes that have been accessed

    • The access option has been added as default to the Backup Level setting.

    • This option updates attributes that are specified as target of the setAttribute and getAttribute methods.

  • Option to display information about a session in idle time and support for monitoring the information on WebAdmin

    • The option -t is now available for the list-session command. By using the option, only the information about a target manager can be retrieved.

    • With JEUS 8, you can monitor the list-session information on WebAdmin.

  • Encoding rules for sticky encoding support

    • Sticky encoding is enabled by using WebAdmin or jeusadmin. The options are BASE64 (default) and RAW.

    • BASE64 is based on the Base64 encoding algorithm while RAW uses the domain name and server name without encoding.

  • Options for file passivation and passivation triggers support

    OptionDescription
    Single Folder File LimitMaximum number of session files to store in a folder.
    RatioNumber that determines the portion of sessions to be passivated out of the total number of sessions or the memory allocated to sessions.
    Count ThresholdMaximum number of sessions to keep in memory. When this number is exceeded, some sessions are flushed to files.
    Memory ThresholdMaximum size of memory allocated for sessions. When this size is exceeded, some sessions are flushed to files.
  • Function to receive a backup remotely in DOMAIN_WIDE session-clustering mode without deploying applications.

    • In DOMAIN_WIDE mode, you can receive a backup remotely by deploying a dummy application with the following system property:

      -Djeus.sessionmanager.receive.backup.despite.no.deploy=true

2.1.4. WebService

  • Functions related to JAX-RS

    • JAX-RS Server-sent Events (SSE)

      HTML 5's SSE provides a way to implement server-side browser push.

    • JAX-RS HTTP basic authentication

      With Basic Authentication, a JAX-RS client can authenticate itself with a server.

    • JAX-RS asynchronous processing

    • JAX-RS JSON processing

  • JMS Store-and-Forward (SAF) support

    • JMS SAF is supported with JMS bridges.

  • Server-sent events (SSE) support

    • HTML 5's SSE

      Server-sent events (SSE) provides a better function than Comet techniques for providing a way to implement server-side browser push. (Server-Sent Events, W3C Candidate Recommendation 11 December 2012). For details, see https://www.w3.org/TR/eventsource/.

  • HTTP Basic Authentication function

    • With Basic Authentication, JAX-RS clients can provide authentication information when a server requires it.

    • It implements javax.ws.rs.client.ClientRequestFilter to create an authentication header.

2.1.5. Security

  • Password validator function

    • It improves password security by enabling the user to set requirements for a password that must be met when entering or modifying a password.

    • The default password validator provides requirement options such as special characters, numbers, uppercase letters, lowercase letters, minimum and maximum lengths, and inhibition of the ID.

    • A custom password validator is supported for the user to customize a password validator.

2.1.6. Deployment

  • Library deployment function

    • The library deployment function is enabled in DAS.

    • In previous versions, the same library is placed in each server by using lib/shared/libraries.xml. In JEUS 8, the library deployment function minimizes the use of resources by resolving the issue with the parent-child hierarchy by referencing a single classloader.

2.1.7. JMX

  • Spring JMX support

    • JEUS 8 provides the Spring JMX MBeanServerFactoryBean implementation. With the implementation, you can easily find and use a corresponding JEUS MBeanServer.

2.1.8. Server

  • Options to indicate the base time and end time for the server-log command

    • With the options, the server-log command can retrieve logs for a specific duration of time.

    • In the previous version, the server-log command could retrieve a specific number of lines beginning at the start time. In this release, the command can retrieve logs generated for a specific duration of time with the base time and end time options.

2.1.9. Tool

  • Option (-verbose) in jeusadmin Script mode

    • In previous versions, when you are using jeusadmin in script mode, the console displays the results of the script and other general results together. In this case, if you are relying on the results printed on the command prompt, you could not easily identify the information you want. To prevent this problem, the -verbose option is added to jeusadmin running in script mode.

2.1.10. Manuals

  • JEUS Network Library Manual

    • The JEUS Network Library manual is provided in the Javadoc format.

2.2. Changed Features

This section describes changed features by module.

2.2.1. Server

  • Updates for native libraries

    • The jeusadmin -licenseinfo command is changed to display sequence numbers (seqno).

    • A license with an expiration date can be selected.

    • The license for cloud is added.

  • Removal of NIO implementations and asynchrous processing support for servlets

    • NIO implementations such as jeus.servlet.connector and AsyncServlet available in JEUS 5 and 6 are removed. Settings related to the NIO implementations in each module are also removed.

  • Standardization of backup methods

    • In previous versions, the boot-time domain backup feature and the pack-domain command carried out backup differently. In this release, the boot-time domain backup method is changed to carry out the same actions as the pack-domain command.

  • Changes in the structure of the life-cycle schema (library-ref)

    • The structure of the schema library-ref in domain.xml is changed so that configurations can be made by adding elements.

    • The failon-error and exact-match attributes of library-ref are changed to elements. Other related settings in the .xml file are changed in accordance.

    • Before change

      <library-ref failon-error="true">
          <library-name>test</library-name>
          <specification-version exact-match="true">11</specification-version>
          <implementation-version exact-match="true">22</implementation-version>
      </library-ref>
    • After change

      <library-ref>
          <library-name>test</library-name>
           <failon-error>true</failon-error>
           <specification-version>
               <value>11</value>
               <exact-match>true</exact-match>
           </specification-version>
           <implementation-version>
               <value>22</value>
               <exact-match>true</exact-match>
           </implementation-version>
      </library-ref>
  • Improved processing of the lock on the configuration file

    • A lock on the domain.xml file is shared among servers to prevent one server from writing to the file while another is reading it. This feature prevents inconsistency in the file.

    • In previous versions, the scope of the lock was too broad that an attempt at starting all servers at once with NodeManager would sometimes fail. In this release, this problem is prevented by adjusting the scope and enforcement time of the lock.

  • JavaServer Pages Standard Tag Library (JSTL) update

    • JSTL 1.2 is upgraded to JSTL 1.2.5.

  • Improved accuracy of retrieving the server runtime information by the server-info command

    • The server-info command is improved to retrieve the runtime information along with the status more accurately.

    • In previous versions, the command calculated runtime from the time passed since the ServerStateInfo object that contains the server status is created. The calculated runtime was initialized when DAS was restarted. In this release, the runtime is calculated from the begin time obtained from SCF (GMS) and is more accurate.

    • When the begin time is unavailable, only the status information is returned.

  • The ASM API version for ClassVisitor update

    • The ASM API version for ClassVisitor is updated to ASM 5 for compatibility with JDK 8.

2.2.2. Servlet

  • Removal of the use-nio setting from listeners and connectors

    • In this release, because NIO implementations for listners are removed in JEUS 8, the use-nio setting is removed from listners and connectors as well.

    • The use-nio and thread-pool settings are removed from webtob-connector. The use-nio and selector-count settings are removed from tmax-listener.

  • Change in the default value of wjp-version of webtob-connector to 2

    • In this release, the default version of WebtoB-JEUS Protocol (WJP) is set to 2 for a WebtoB connection.

    • Versions earlier than WebtoB 4.1.6 do not provide WJP 2. For these versions, you need to set wjp-version to 1.

  • Inclusion of WebSocket as a default setting

    • In previous versions, you had to configure jeus-web-dd.xml to use WebSocket. In this release, WebSocket is changed to a default setting requiring no additional configuration. As a result, it is no longer necessary to use the websocket option of the webddgen command to create jeus-web-dd.xml, and the option is removed.

  • Change in the webinf-first schema.

    • In JEUS 7 and earlier versions, you could change the webinf-first schema by using mixed properties. In this release, you can change the schema by adding elements.

  • Renaming of the distributed websocket session function to distributed user properties.

    • The distributed websocket session function enables websocket sessions with distinct jsessionids to share the same userproperties map. In this release, it is renamed to 'distributed user properties' to better represent its function, and the structure is changed from having attributes to having child elements.

  • Improved processing of empty strings in the HTTP parameter.

    • When an emptry string is given as input value to HttpServletRequest.getParameter(), it returns an emptry string.

    • In previous versions, different values were returned for an empty string input. Query string and x-www-form-urlencode returned an emptry string, and multi-part/form-data returned the result of the new String() command. In this release, the three methods are changed so that they return an emptry string for an empty input value.

2.2.3. Session Server

  • Change of the existing previous system properties to options of the jeusadmin commands and WebAdmin configurations.

    • The following properties have been changed to options and are no longer available as system properties.

      jeus.sessionserver.backupqueue.max    ⇒ Backup Queue Size
      jeus.sessionserver.backupunit         ⇒ Backup Unit Size
      jeus.session.exclude.das.in.cluster   ⇒ Exclude Das In Cluster
      jeus.sessionserver.ignore.flowcontrol ⇒ Ignore Flow Control
      jeus.sessionmanager.failback.allow    ⇒ Allow Fail Back
      jeus.sessionmanager.prevent.migration ⇒ Prevent Migration 
  • Change of the configuration method for session clustering.

    • The configuration method for session clustering in WebAdmin has been changed.

    • The settings for session clustering in the configuration file has been integrated.

  • Renaming of session clustering modes.

    • The following modes have been renamed.

      Application scope session clustering ⇒ Default session cluster  
      Domain scope session clustering      ⇒ Domain wide session cluster 
      User-defined scope session clusering  ⇒ Specific scope session cluster 
      
  • Options to console commands and changed usage.

    • Options have been added to show-session-configuration and its usage has been changed.

    • Options have been added to modify-session-configuration and its usage has been changed.

  • Improved performance of passivation by enhancing the session object management structure of DistributedSessionManager

    • The global lock on passivation has been removed to prevent competition between workers.

    • The existing files have been changed to be managed by session. The schema related to passivation has been changed.

  • Improved stability in processing sessions

    • Improved session management where access session, created by ServletRequestListener, is called twice.

    • Improved the processing of binding the same attribute that has been invoked by SetAttribute.

  • Other updates

    • Optimized the session feature by removing unnecessary session class structures.

    • Enhanced stability of monitoring and migration where failback is used in the domain wide session cluster mode.

    • Enhanced stability of a failback from multiple servers to a single server by using multithreading.

2.2.4. EJB

  • Changes in EJB clustering

    • EJB clustering performance is improved by removing the Dynamic Link Ref (DLR) and implementing LiveRef.

      • In the previous version, EJB clustering is based on JNDI and DLR. In this structure, a clustered EJB requires many JNDI operations and responds to a failover by replacing a stub, which result in overhead. In this release, this problem is fixed by removing DLR and implementing LiveRef, which result in increased performance of EJB clustering.

      • The improvement applies to EJB 3.x stateless session beans. In earlier versions of EJB, you need to set the use-dlr option of jeus-ejb-dd.xml to true or enable @Clustered(useDlr=true).

    • Load-balancing is improved for method invocation for stateless session beans.

      • Load-balancing can be configured with the jeus.ejb.cluster.selection-policy option.

    • In the previous version, a JNDI context was randomly selected in a cluster. In this release, it is selected on the basis of enabling local optimization.

  • EJB Home is hidden from the client.

    • In EJB 3.x, EJB home is exposed to the client side. In this release, it is hidden.

2.2.5. Security

  • Changes to the security domain

    • When a security domain is added without activation, the user creation menu is not displayed.

    • Abnormal operation is prevented by changing the method to check whether a security domain is created after adding it.

  • Option to specify an SSL protocol

    • There have been some security issues with SSLv3, causing cautions about using a certain protocol.

      The following has been added so that you can specify the SSL protocol version by using the <ssl><ssl-protocol> of the schema.

      -Djeus.net.ssl.protocolVersions=TLSv1,SSLv3 

2.2.6. JMS

  • Enabling DELETE_TABLES_ON_START for a journal file.

    • In previous versions, a journal file could be initialized only by deleting the directory. But now it can be initialized at JEUS startup.

  • Loading multiple JAR files during message bridge configuration

    • In previous versions, you could only select one JAR file from a classloader when configuring a message bridge. But now you can select multiple JAR files by delimiting them with a comma.

  • Changes regarding connection to message stores created in previous versions

    • Messages are not compatible with those created in earlier versions. When a connection is made to message stores made in other versions, the messages are printed immediately and the JMS engine is kept from starting.

    • The same procedure takes place when a connection is made to journals created in other versions.

2.2.7. WebService

  • Change of the path to Web Service library

    • The path to webservices-rt.jar and webservices-tools.jar has been changed from lib/system to lib/shared.

  • Funtion to disable JAX-RS implementations

    • The function to disable a basic JAX-RS implementation in case a conflict in libraries is expected.

    • Instead of changing the relevant JAR file, you can just delete the settings for a JAX-RS implementation in ${JEUS_HOME}/lib/shared/libraries.xml to disable it.

2.2.8. JNDI

  • When isGracefulRedeploymentSupported is executed in DirService, ClassLoader is not changed.

    • The classloader is changed to remain unchanged while graceful redeployment is checked.

  • Improved processing of hostname when InitialContext is created

    • In previous versions, when an empty character string is given such as "", the hostname is set to ":9736." To prevent this problem, the hostname is replaced with localhost.

2.2.9. Network

  • Changes in the SSL settings used for listeners

    • Abrnomal SSL settings used for listeners are changed.

    • The default password values for a keystore and truststore are removed.

    • The default pathnames for keystore and truststore files are removed.

    • Relative paths are allowed for keystore and trustore files. (The paths must start from the config directory in each domain.)

    • SSLContext used to handle a client's SSL can be configured only by using the configuration tags. System properties need to be set by the client.

  • Improved NIO performance

    • A selector manages reading data and the buffer, which reduces unnecessary read count and simplifies the operational logic, thereby improving overall performance.

    • SSLSocketChannel 클래스의 inNetBuffer를 JeusSocketChannel의 read buffer와 통합하여 SSL 처리를 최적화하였다.

2.2.10. JMX

  • Changes in the jmx-manager schema

    • In previous versions, the jmx-manager schema is complicated and has unnecessary elements. In this release, it has been trimmed down and contains new necessary elements.

    • Deletions

      • jmxmp-connector

      • rmi-connector

      • jmx-connector

      • html-adaptor

    • Additions

      • use-rmi-connector

      • use-html-adaptor

      • html-adaptor-port

  • Fix for the issue that an SNMP client could not monitor JEUS

    • In previous versions, you could not monitor the JEUS web server with an SNMP client because it failed to link to SNMPAgent and MBeanServer properly. In this release, this problem is fixed.

2.2.11. Logging

  • Change of the filename format of JEUS logs

    • For logs with the configurations of log rotation, valid-hour, and append:false, their filenames contain 24-hour format timestamps so that you can tell the log creation hour from the rotation name.

    • The filename is in the format JeusServer_yyyyMMdd_HH.log[0000].

2.2.12. NodeManager

  • Improved method for ensuring NodeManager is connected to the ssh node

    • Before making a remote command to the ssh node, the connection to the ssh node is checked by using a Java command to run the ssd node and the method for checking whether it is working. Both methods are improved.

    • The Java command is changed to java -version. If the returned result beings with the character string "java version," the connection is working.

2.2.13. Transaction

  • Change in the schema

    • In this release, the word "uncompleted" is replaced with "incomplete." In accordance, the <tm-config><uncompleted-timeout> element in the schema is changed to <tm-config><incomplete-timeout>.

    • The "-ut" option of the modify-transaction-manager command for jeusadmin is changed to "-it."

2.2.14. JSF

  • JSF 2.2 RI upgrade

    • JSF 2.1.3 is upgraded to JSF 2.2.13.