New in V8.5.5.Next Alpha (February update)

The V8.5.5.Next Alpha (February update) for WebSphere Application Server and WebSphere Application Server Developer Tools for Eclipse is now available. Here are a few of the things we love about it.

New in V8.5.5.Next Alpha

Feature and configuration management

Automatically add features in the Server Configuration editor

When you add a new element to the server configuration and the required feature is not already enabled, the Server Configuration editor will now, optionally, add the feature to the server for you.

EnableFeature New in V8.5.5.Next Alpha (February update)

Automatically update server.xml with an include from the server tools

The Create SSL Certificate, Create Collective Controller and Join Collective tools now provide the option to generate an include file from the server configuration for you. The tools then automatically add the new include to the server.xml.

Create SSL Certificate New in V8.5.5.Next Alpha (February update)

Developer experience

Support for Eclipse Kepler

The developer tools now support Eclipse Kepler as well as Eclipse Juno. Eclipse Kepler improves performance so that the editors open, close, and switch much faster. Eclipse Kepler has also addressed a number of memory leaks so that long-running applications don’t run out of memory.

WDTKepler New in V8.5.5.Next Alpha (February update)

Developer tools download and installation

You can download and install WebSphere Application Server Liberty Profile V8.5.5.Next Alpha from within in the developer tools.

alphaibmdl21 New in V8.5.5.Next Alpha (February update)

Java EE Concurrency API

Configure and use server-managed executors, scheduled executors, thread factories, and the thread context service.  Thread context capture and propagation includes the classloader context, the Java EE metadata context, and the security context.

Here is some sample application code that uses the default managed scheduled executor to schedule a task that refreshes some cached data from the database every 15 minutes, running for the first time 5 minutes after being scheduled.

Example configuration of the feature in server.xml:

 <server>
  <featureManager>
    <feature>servlet-3.0</feature>
    <feature>concurrent-1.0</feature>
  </featureManager>
</server>

Example application code that uses a managed scheduled executor:

public class ConcurencyExampleServlet extends HttpServlet {
  @Resource(lookup = "java:comp/DefaultManagedScheduledExecutorService")
  ManagedScheduledExecutorService executor;

  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    Runnable task = new Runnable() {
      public void run() {
        try {
          DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/MyDataSourceRef");
          Connection con = ds.getConnection();
          try {
            // ... refresh cached info from database
          } finally {
            con.close();
          }
        } catch (Exception x) {
          x.printStackTrace(System.out);
        }
      }
    };
    executor.scheduleAtFixedRate(task, 5, 15, TimeUnit.MINUTES);
  }

JCA Outbound Resource Adapter support

Configure and use server-managed connection factories from outbound resource adapters and administered objects. Here is some sample application code that uses a JCA connection factory and administered objects.

Example configuration in server.xml:

<server>
  <featureManager>
    <feature>servlet-3.0</feature>
    <feature>jca-1.6</feature>
  </featureManager>

  <resourceAdapter id="myAdapter" location="C:/connectors/MyAdapter/MyResourceAdapter.rar"/>

  <connectionFactory jndiName="eis/connectionFactory1">
    <properties.myAdapter hostName="localhost" portNumber="1234"/>
  </connectionFactory>

  <adminObject jndiName="eis/interactionSpec1">
    <properties.myAdapter functionName="ADD" executionTimeout="1000"/>
  </adminObject>

  <adminObject jndiName="eis/interactionSpec2">
    <properties.myAdapter functionName="REMOVE" executionTimeout="500"/>
  </adminObject>
</server>

Example application code that uses a JCA connection factory and administered objects:

public class ExampleServlet extends HttpServlet {
  @Resource(lookup = "eis/connectionFactory1")
  ConnectionFactory connectionFactory;

  @Resource(lookup = "eis/interactionSpec1")
  InteractionSpec ispec_Add;

  @Resource(lookup = "eis/interactionSpec2")
  InteractionSpec ispec_Remove;

  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    try {
      MappedRecord record = connectionFactory.getRecordFactory().createMappedRecord("PARTS");
      record.put("PARTNUM", "A368006U");
      record.put("PRICE", 102.49f);
      record.put("SUPPLIER", "IBM");
      Connection con = connectionFactory.getConnection();
      try {
        Interaction interaction = con.createInteraction();
        interaction.execute(ispec_Add, record);
        interaction.close();
      } finally {
        con.close();
      }

WebSocket support

There is now partial support for both the WebSocket Protocol and the Java API for WebSockets. This includes connection initiation, message reading and writing, ping, pong, most annotations, and message decoding and encoding.

February update

Stories added in the February update

  • Create non-version specific server and runtime type ID for Liberty server
  • Provide RESTHandler framework
  • Default change: error on misconfigured JPA data source rather than ignoring
  • Loose config support for OSGi applications in tools
  • Support relaxed rules for session interfaces
  • Schema needs to support an unknown nested child element
  • Add internal libraries and custom SSL Trust Manager to enable Remote Server Connectivity
  • WebSockets: Remove restrictions on onOpen, on Close and onMessage methods
  • WebSockets: Support Session.getOpenSessions
  • Complete JCA 1.6 support
  • WDT in-workspace installer to discover and install optional features from the WDT update site
  • Need option to remove WS-Security policy from service/client WSDL

Defects (bugs) fixed in the February update

  • @ConfigProperty for a Boolean valued field, has the value of the type element as String.class
  • Cannot enable timedOperations report dynamically
  • Exception during createResource of a ResourceFactory resulting in null being returned to the application
  • Bus Name should be ignored for messaging flows within liberty server
  • Invalid Export-Package header in com.ibm.ws.javaee.jsf.tld.2.0 jar and com.ibm.ws.javaee.jsp.tld.2.2 jar
  • Utility jar class not found when referenced by OSGi Web Bundle in loose config mode
  • NPE from security collaborator when using WAB with cdi feature
  • websocket sample code can not work on latest Liberty build
  • OSGi RegionManager increases memory by 1.4 MB by loading MBeans during startup
  • ClassLoadingService can try to create the same gateway bundle on two threads concurrently and BOOM!
  • lWAS:SVT: JSF can not find WebSockets classes when destroying the context.
  • New servlet added to a war within an ear through the tools fails to load
  • Unable to generate Web service client of Liberty project from Services view

Plus another ~330 minor defects too.

  • Yan

    Hello, about Java EE Concurrency API

    in wlp-developers-runtime-2013.11.jar and wlp-developers-extended-2013.11.jar

    there is no definitions about javax.enterprise.concurrent package.

    Not in ./dev and ./lib folder

    in ./lib there is some ibm stuff (Implementation), which relies on API, but no API package.

    How can i use new functionality?

    by the way in 8.5.5.1 there is similiar problem, declared ManagedExecutorService, even in infocenter, but no declarations in .jar

    thank you for the answer.

    • Eric Peters

      Hi Yan, the missing API package is a bug in the alpha driver- thank you
      for pointing it out! We will look into getting it corrected.
      Regarding
      8.5.5.1, it is correct to exclude the Java EE Concurrency API because
      8.5.5.1 does not implement that specification, and provides only a Java
      SE ExecutorService, which is managed by the app server.

      • Yan

        Thank you very much for the answer.