A JBoss Project
Red Hat

Posts tagged with 'jbosstools'

Recently, I was working on a problem with WildFly and Java hot code replacement. When the JVM refuses to update a class (for example, because you added a method), JBoss Server tooling tries to be helpful and offers to restart the web apps in the WildFly server. Unfortunately, this doesn’t work 100%: even though the class in question is deployed and used, further changes in the class will be refused. While debugging a potential fix for this (it’s a garbage collection problem, but that’s not the point of this story), I installed a new version of OpenJDK and bam! everything just stopped working. Ok, "everything" is overstating the problem a bit, but I couldn’t deploy to the server anymore, which for a web app is pretty bad. So forget about hot code replacement…​this is MUCH worse. Seems I was hitting a known problem.

So what’s the problem?

The tooling complained that it couldn’t move some file to its final location, in the deployment directory of the server. Often the root directory, but not always. Hmh…​the directory being locked maybe? This was on Windows, so I fired up cmd.exe and looked at the directory in question (dir /Q is helpful). This is where it gets weird. The directory was there, but it had no owner. Deleting it was impossible. Wat?!

Wat

I started procmon.exe to see what was happening. The move to the directory failed with DELETE_PENDING. Looking at the source, this directory had been deleted (successfully) as part of the deployment, and recreated. All of a sudden, my spidey sense tingled…​there was something weird about deleting stuff on Windows (I used to be a real hacker, you know…​). On Unix-like OS’s, deleting a file just removes it from the directory. Once the last link to the file is gone it is deleted as soon as the last handle to the file is closed. Windows almost does the same thing, but the file is not immediately removed from the directory. Instead, it is in a zombie state, where you can still see the file, but you can’t do anything with it. That would explain the problem, so like a good little scientist, I then had a hypothesis: the WildFly server was somehow keeping a handle to the deleted directory open and thus, kept it alive. Since WildFly is using the Java WatchService to find out about changes in the deployment directory, the WatchService was my designated bad guy for the time being.

Let’s verify

It’s quite hard to test this against the WildFly server (it being a, let’s say, "non-trivial" program), so what was needed was a simple program that reproduces the problem…​clickety click…​here we go: two processes, one is watching a directory, the other tries to delete, recreate and modify the directory. Looks good, except it did NOT reproduce the problem.. This could be timing-dependent, so I applied a time tested strategy called "poking at the problem". Just added some sleep(500)'s in random places and hoped for the best. Indeed, after a couple of tries, I was able to reproduce the problem maybe 20% of the time. Even better: I could reproduce it with the debugger attached. Good thing this was on OpenJDK: it meant I could just download the sources and debug through the WatchService class. And indeed, the WatchService was stuck trying to clean up the handle to our directory. It had dutifully cancelled any pending "overlapped" I/O requests (that’s just asynchronous I/O for the non-Windows folk) and now was waiting for the I/O to be indeed cancelled. But the last operation on the directory had failed (it was deleted, remember?), so there was no pending I/O, which means the thread would wait forever.

The takeaway…​

We now have a bug report and a patched build of OpenJDK that allows me to get back to solving the original problem. That’s pretty cool, eh? This is a good example of what you can do when a system is open to inspection. It helps that I can look at the OpenJDK sources; debugging bytecodes is definitely no fun. But the coding style used in the WatchService class is also very important. They mirror the Windows native calls in a Java class. This (and MSDN) makes it possible to debug the windows specific implementation of the watch service.

Thanks to Rob Stryker and Alex Kashchenko who helped me debug this problem.

Updates to Red Hat JBoss Developer Studio 9 and JBoss Tools 4.3.0.Final for Eclipse Mars are now generally available!

jbds9

What’s new?

We’ve added a link in the composite updates sites to EGit 4.1.1, so that users of Mars.2 can continue to enjoy using EGit with JBoss Tools and Red Hat JBoss Developer Studio.

Without this minor change, installation of JBoss Tools and Red Hat JBoss Developer Studio on Mars.2 cause two versions of jgit to be installed, effectively disabling it and preventing EGit views and preferences from working.

This fix does not affect offline installs as we have not rebuilt the target platform zips. So for those users, you will need to wait for JBoss Tools 4.3.1 or Red Hat JBoss Developer Studio 9.1 to be released, or use the latest Beta2 releases here:

Previous announcements

For what’s new in this release of JBoss Tools 4.3.0.Final or JBoss Developer Studio 9.0.0.GA, see our previous GA blog announcement.

What’s next?

We are already working on the next maintenance release for Eclipse Mars - JBoss Tools 4.3.1.CR1 and Red Hat JBoss Developer Studio 9.1.0.CR1 will be available shortly, with Final/GA releases soon after.

We are also working on our first Eclipse Neon based builds. Try them out here:

Enjoy!

Nick Boldt

Try our complete Mars.2 capable, JBDS 9.1.0.Beta2 compatible Integration tooling (Beta).

jbosstools jbdevstudio blog header
JBoss Tools Integration Stack
Since JBoss Tools 4.3.0 we require Java 8 for the installation and use of all JBoss Tools, including the Integration Stack tooling. We still support developing and running applications using older Java runtimes. See more in Beta1 blog.

JBoss Tools Integration Stack 4.3.0.Beta1 / JBoss Developer Studio Integration Stack 9.0.0.Beta1

Note: All of the Integration Stack components are Early Access. See the installation section below for instructions.

What’s an Integration Stack?

The Integration Stack for JBoss Developer Studio is a set of features and plugins for Eclipse that further enhances the IDE development functionality provided by JBoss Developer Studio in support of the following frameworks:

JBoss Fuse Development

  • Fuse Tooling - JBoss Fuse Development provides tooling for Red Hat JBoss Fuse, specifically for integrating and developing software components that work with Apache ServiceMix, ActiveMQ and Camel. It features the latest versions of the Fuse Data Transformation tooling, SwitchYard and access to the Fuse SAP Tool Suite.

  • SwitchYard - A lightweight service delivery framework providing full lifecycle support for developing, deploying, and managing service-oriented applications.

JBoss Business Process and Rules Development

JBoss Business Process and Rules Development plug-ins provide design, debug and testing tooling for developing business processes for Red Hat JBoss BRMS and Red Hat JBoss BPM Suite.

  • BPEL Designer - Orchestrating your business processes.

  • BPMN2 Modeler - A graphical modeling tool which allows creation and editing of Business Process Modeling Notation diagrams using graphiti.

  • Drools - A Business Logic integration Platform which provides a unified and integrated platform for Rules, Workflow and Event Processing including KIE.

  • jBPM6 - A flexible Business Process Management (BPM) suite.

JBoss Data Virtualization Development

JBoss Data Virtualization Development plug-ins provide a graphical interface to manage various aspects of Red Hat JBoss Data Virtualization instances, including the ability to design virtual databases and interact with associated governance repositories.

  • Modeshape - A distributed, hierarchical, transactional and consistent data store with support for queries, full-text search, events, versioning, references, and flexible and dynamic schemas. It is very fast, highly available, extremely scalable, and it is 100% open source.

  • Teiid Designer - A visual tool that enables rapid, model-driven definition, integration, management and testing of data services without programming using the Teiid runtime framework.

JBoss Integration and SOA Development

JBoss Integration and SOA Development plug-ins provide tooling for developing, configuring and deploying BRMS, SwitchYard and Fuse applications to Red Hat JBoss Fuse Service Works, Red Hat JBoss Fuse and Fuse Fabric containers, Apache ServiceMix, and Apache Karaf instances.

  • All of the Business Process and Rules Development plugins, plus…​

  • Fuse Apache Camel Tooling - A graphical tool for integrating software components that works with Apache ServiceMix, Apache ActiveMQ, Apache Camel and the FuseSource distributions.

  • SwitchYard - A lightweight service delivery framework providing full lifecycle support for developing, deploying, and managing service-oriented applications.

SOA 5.x Development

  • JBoss ESB - An enterprise service bus for connecting enterprise applications and services.

  • jBPM3 - A flexible Business Process Management (BPM) Suite - JBoss Enterprise SOA Platform 5.3.x compatible version.

All of these components have been verified to work with the same dependencies as JBoss Tools 4.3 and Developer Studio 9.

What’s Been Updated for Mars?

Almost everything! Updates have been made to the Business Process tooling, Fuse Tooling, Data Virtualization and SOA Development tooling product groups. See the Integration Stack 9.0.0.Beta1 Release Notes for more details.

Released Tooling Highlights

JBoss Fuse Development Highlights

Fuse Tooling Highlights
  • Including Data Transformation, SAP and SwitchYard

  • Notice the revamped Camel route editor!

Also see Lars Heinemann’s Blog for more Fuse Tooling insights.

SwitchYard Highlights

JBoss Business Process and Rules Development

BPMN2 Modeler Highlights
Drools/jBPM6 Highlights

Data Virtualization Highlights

Teiid Designer Highlights

The JBoss Tools website features tab

Don’t miss the Features tab for up to date information on your favorite Integration Stack components.

Installation

The easiest way to install the Integration Stack components is to first install JBoss Tools 4.3.1 or JBoss Developer Studio 9.1.0 and then select the Software/Update tab in the JBoss Central view. Select the 'Enable Early Access' checkbox.

For a complete set of Integration Stack installation instructions, see Integration Stack Installation Instructions

Try it out!

Paul Leacu.

A couple weeks ago, I started prototyping how we could enable building PRs submitted against the JBoss Tools projects, in order to more easily create installable update sites (Eclipse p2 repositories) from pull requests. This is part of our new thrust to provide more continuous integration and deployment, to better be able to release software faster.

Purpose

Verify a commit before pushing it to master. Continuous feedback. Easier installation testing. Ability to share a proposed change, including the whole built update site so peer reviews can be done against binaries as well as sources.

Job Config

Here’s how to configure a job to use the Github Pull Request Builder Plugin:

  1. add a sha1 parameter

    <hudson.model.StringParameterDefinition>
      <name>${sha1}</name>
      <description/>
      <defaultValue>master</defaultValue>
    </hudson.model.StringParameterDefinition>
  2. pull from git using this remote config:

    <name>origin</name>
    <refspec>+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin/pr/*</refspec>
  3. pull from git using this branch:

    ${sha1}
  4. enable Github Pull Request Trigger

    <org.jenkinsci.plugins.ghprb.GhprbTrigger plugin="ghprb@1.20.1">
      <spec>H/5 * * * *</spec>
      <adminlist>nickboldt</adminlist>
      <allowMembersOfWhitelistedOrgsAsAdmin>false</allowMembersOfWhitelistedOrgsAsAdmin>
      <orgslist>jbosstools</orgslist>
      <cron>H/5 * * * *</cron>
      <triggerPhrase/>
      <onlyTriggerPhrase>false</onlyTriggerPhrase>
      <useGitHubHooks>false</useGitHubHooks>
      <permitAll>false</permitAll>
      <commentFilePath/>
      <whitelist>nickboldt</whitelist>
      <autoCloseFailedPullRequests>false</autoCloseFailedPullRequests>
      <displayBuildErrorsOnDownstreamBuilds>false</displayBuildErrorsOnDownstreamBuilds>
      <whiteListTargetBranches>
        <org.jenkinsci.plugins.ghprb.GhprbBranch>
          <branch/>
        </org.jenkinsci.plugins.ghprb.GhprbBranch>
      </whiteListTargetBranches>
      <msgSuccess/>
      <msgFailure/>
      <commitStatusContext/>
      <project>jbosstools-build-sites.aggregate.child-sites__pull-request_master</project>
    </org.jenkinsci.plugins.ghprb.GhprbTrigger>

Job Steps & Deployment

One way to react to a successful build of a PR is to simply deploy to a different URL than normal builds.

For example, a job could be set up such that if ${ghprbPullId} is defined, a deploy-pr profile is used; if not, the usual deploy-to-jboss.org profile could instead be used.

mvn deploy -Pdeploy-pr

However, we might also want a different sequence of build steps in a job. Normally, we orchestrate jobs to build, deploy, & test. But for a PR build, we might instead want to sequence the steps as build+test, and only deploy if successful.

So perhaps instead of parameterizing the job to publish to snapshots/pulls/ or snapshots/builds/, we might instead parameterize the maven lifecycle steps:

if [[ ! ${ghprbPullId} ]]; then
    mvnStep1="clean install -DskipTests" # build without tests
    mvnStep2="deploy -Pdeploy-to-jboss.org" # deploy if p2diff or SHA check shows difference into /builds/ folder
    mvnStep3="verify" # run tests & fail job if problems found
else
    mvnStep1="clean deploy -Pdeploy-pr" # build and test, then deploy to /pulls/ folder if successful or fail if tests fail
    mvnStep2="NONE"
    mvnStep3="NONE"
fi

Current experiment is here (sorry, VPN required):

Questions / TODOs

  • Can whitelists be set up programmatically? (git committerIDs which can trigger a build automatically)

  • Can admins be set up programmatically? (git committerIDs which can approve a PR to be built, rather than ANY submitted PR, to prevent malicious attacks)

  • How do we roll up a low-level project’s pull request build into a larger stack of projects or products? Do we rebuild everything that’s downstream? Or just the aggregates/product?

  • How aggressively should we purge pull request builds?

  • When running matrix jobs, what happens when one part of the job is running, another is waiting, and a force-push updated to a PR arrives? (Answer: the waiting configurations will fail because the expected SHA no longer exists, having been force-replaced.)

The second Beta of JBoss Tools 4.3.1 and JBoss Developer Studio 9.1.0 for our maintenance Mars release is available.

jbosstools jbdevstudio blog header
Remember that since JBoss Tools 4.3.0 we require Java 8 for installing and using of JBoss Tools. We still support developing and running applications using older Java runtimes. See more in Beta1 blog.

What is New?

Full info is at this page. Some highlights are below.

Eclipse Mars.2

JBoss Tools and JBoss Developer Studio are now targeting the latest Eclipse Mars.2 as a running platform with many issues fixed comparing to the previous Mars.1 release.

OpenShift 3

More than 60 issues targeting OpenShift 3 support have been fixed in this release. The OpenShift 3 integration was introduced as a technology preview feature in JBDS 9.0.0.GA but will graduate to a supported feature in the upcoming JBDS 9.1.0.GA release.

Incremental publishing

The OpenShift 3 server adapter now respects the auto-publish settings as declared in the server editor, giving the user the option to automatically publish on workspace changes, build events, or only when the user requests it. The server adapter is also able to incrementally deploy the server’s associated project with a quick call to rsync, ensuring minimal over-the-wire transfers and a fast turnaround for testing your project.

Support for Java EE projects

Experimental support for Java EE projects (Web and EAR) is now available. When the workspace project associated with the OpenShift 3 server is a Dynamic or Enterprise Application project, the server adapter builds an exploded version of the archive to a temporary local directory and replaces the version deployed on the remote OpenShift pod. That Pod Deployment Path, is now inferred automatically from the image stream tags on the remote Pod. A .dodeploy marker file is created for the remote server to redeploy the module if necessary (for EAP/WildFly servers supporting it).

Support for LiveReload

The new tooling includes LiveReload support for OpenShift 3 server adapters. This is accessible from the Show In > Web Browser via LiveReload Server menu. When a file is published to the server adapter, the Browser connected to the LiveReload server instance will automatically refresh.

openshift3-livereload-menu

This is particularly effective in conjunction with the Auto Publish mode for the OpenShift 3 server adapters, as all it takes to reload a web resource is saving the file under edition (Ctrl+S, or Cmd+S on Mac).

Simplified OpenShift Explorer view

Previously, the OpenShift 3 resources representation exposed a large amount of unnecessary information about OpenShift. The explorer view is now simplified and specific (and made much more robust) and focuses on an application-centric view.

simplified-openshift3-view

Everything that is no longer displayed directly under the OpenShift Explorer is accessible in the Properties view.

Red Hat Container Development Kit server adapter

The Red Hat Container Development Kit (CDK) server adapter now provides menus to quickly access the Docker Explorer and the OpenShift Explorer. Right-click on a running CDK server adapter and select an option in the Show In menu:

cdk-server-show-in-menus

Forge Tools

Forge Runtime updated to 3.0.0.Beta3

The included Forge runtime is now 3.0.0.Beta3. Read the official announcement here.

Stack support

Forge now supports choosing a technology stack when creating a project:

stack-new-project

In addition to setting up your project, choosing a stack automatically hides some input fields in the existing wizards, such as the JPA Version in the JPA: Setup wizard:

What is Next

We are approaching the final release for our first maintenance update for Eclipse Mars.2. It’s time to polish things up and prepare a release candidate.

Enjoy!

Alexey Kazakov

Just in time for Christmas, JBoss Tools 4.3.1.Beta1 and JBoss Developer Studio 9.1.0.Beta1 are ready for download. This is the first beta for our maintenance Mars release.

jbosstools jbdevstudio blog header
Remember that since JBoss Tools 4.3.0 we require Java 8 for installing and using of JBoss Tools. We still support developing and running applications using older Java runtimes. See more in Beta1 blog.

What is New?

Full info is at this page. Some highlights are below.

Docker Tools

Run Image Launch Configuration

When running an image, a launch configuration is created, based on the selected image. This is useful when users want to try tweaking a previous run for various reasons (e.g. binding in new volumes or changing command parameters, etc.)

Running a container from an image can now be also done via a launch configuration.

Run Image Launch Configuration

Docker Machine Support

Docker Machine is now supported for the creation of a new connection. Simply click the "Search…​" button and you will be prompted to select an active Docker Machine connection, if one exists.

Docker Machine Support

TM Terminal Support for Interactive Shells

Containers created with a pseudo TTY allocated (-t) will open within a TM Terminal. This is much more fully featured interaction when compared with the previous standard console. In particular, the Terminal view recognizes the color code on logs and displays messages in appropriate colors.

terminal_tm_support

Improvements on the Importer wizard

The Import wizard that you can access via File > Import Projects from Folder…​, File > Import…​ > General > Projects from Folder or File > Import…​ > Git > Projects from Git (auto-import) allows more user control. You can now see a proposal for the import (what will be imported and how) and select which sub-projects to import or not.

Performances have also been highly improved, and importing a Maven project will now suggest installation of m2e connectors when necessary.

Credential Framework

A new feature has been added to safely store your credentials for various domains in a central location. As our tools grow, it has become more likely that at least some credentials will be re-used by several different features. Having a central place to store, for example, your Red Hat Access credentials or JBoss.org credentials, for re-use by our server adapters or download-runtime features helps to prevent you from having to constantly type the same usernames and passwords in multiple locations. It also helps to ensure that if you change your password on some remote server, you only need to update one location in eclipse.

Credentials Preference Page

OpenShift 3

More than 80 issues have been fixed in this release of the OpenShift tooling, mostly targetting OpenShift 3 support. OpenShift 3 was introduced as a techpreview feature in JBDS 9.0.0.GA but will graduate to a supported feature in the upcoming JBDS 9.1.0.GA release. More details for all improvements you can find here.

Deploy Workspace Projects

You can now deploy existing workspace projects to OpenShift 3 instances. You can either create a new OpenShift application, using an OpenShift 3 connection and then select the workspace project to deploy, or you can start by right-clicking on a project and use the Configure…​ > Deploy to OpenShift…​ menu.

deploy-workspace-project

New OpenShift 3 Server Adapter

A prototype for a new OpenShift 3 server adapter is now available. It’s goal is to allow incremental deployment of workspace resources directly into the deployed node on OpenShift, bypassing the whole build step. Its capabilities are currently limited and require a number of manual steps to set it up, but we should streamline its usage in the next Beta. Currently only Node and PHP based applications are supported.

openshift3-new-server

OpenShift Explorer Improvements

The explorer is now listening to server side events, so it can automatically refresh itself. A new Edit…​ menu is available in the OpenShift Explorer, allowing you to edit any resource (except Builds) as JSON in a text editor.

edit-resources

Search for Docker Images

When deploying a Docker image, searching for a docker image has never been easier, simply click on the Search…​ button and find your favorite image from the the selected Docker registry:

search_docker_images

Expose Additional Ports from the Docker Image

It is now possible to expose ports to a deployment, other than just those explicitly exposed on the docker image (they still need to be exposed by the image though).

expose-service-ports

What is Next

We are working on the next Beta build which we are planning to release in January.

Merry Christmas!

Alexey Kazakov

I’m glad to announce that the RedDeer project has graduated from the incubation phase to the mature phase.

reddeer

Don’t you know RedDeer?

RedDeer is a framework for testing Eclipse plugins (or RCP) and can be executed over various operating systems (Linux, Mac, Windows). At the beginning it was developed as an alternative to SWTBot but now it contains many features and tools which can help you with writing automated tests.

Now, when the project has left the incubation phase, the API won’t be significantly changed for a long time and you don’t have to change your existing code together with RedDeer updates. Like the previous version (0.8.0.Final) the RedDeer 1.0.0.Final is also intended for Eclipse Mars.

Main features

  • Easy to use - just create an instance of the needed widget

New LabeledText("Project name:").setText("Demo");
new PushButton("OK").click();
  • High level API - wizards, views, etc are already implemented

NewJavaClassWizardDialog newJavaClassDialog = new NewJavaClassWizardDialog();
newJavaClassDialog.open();
new NewJavaClassWizardPage().setName("Demo");
newJavaClassDialog.finish();
  • Wait conditions - wait for a specific state

new WaitWhile(new JobIsRunning(), TimePeriod.LONG);
  • Requirements - validate and set the environment according to your requirements

@ApacheTomcatServer(state = ServerReqState.RUNNING)

Tools

  • Project wizards - start testing by creating a test project with everything you need

  • Recorder - create an automated test by recording your steps

  • Spy view - spy all widgets just by mouse hover

  • GEF Spy view - spy GEF componets in a GEF editor

  • Log Parser - define rules how you want to see the log file

  • Code Generator - don’t write the code manually, generate it

Future of RedDeer

In addition to making the framework more and more stable we also plan to improve the recorder and our code generation tool. Moreover, the RedDeer framework is becoming a part of JBoss Tools target platform which means it will be available for any developer contributing to JBoss Tools.

Do you have any idea about a new feature? Raise an issue on github! If you want to contribute, please follow steps described at https://github.com/jboss-reddeer/reddeer/wiki/Developer-guide.

JBoss Fuse Tooling is now featuring production versions of the Fuse SAP Tool Suite, Fuse Data Transformation tooling and SwitchYard plus updated Data Virtualization (Teiid Designer/ ModeShape) and BRMS Tooling (BPEL, BPMN2, Drools/jBPM6) for Luna/JBoss Developer Studio 8.

jbosstools jbdevstudio blog header
JBoss Tools Integration Stack

JBoss Tools Integration Stack 4.2.4.Final / JBoss Developer Studio Integration Stack 8.0.4.GA

What’s an Integration Stack?

The Integration Stack for JBoss Developer Studio is a set of plugins for Eclipse that further enhances the IDE functionality provided by JBoss Developer Studio in support of the following frameworks:

JBoss Fuse Development

  • Fuse Tooling - JBoss Fuse Development plug-ins providing tooling for Red Hat JBoss Fuse, specifically for integrating and developing software components that work with Apache ServiceMix, ActiveMQ and Camel.

JBoss Business Process and Rules Development

JBoss Business Process and Rules Development plug-ins provide design, debug and testing tooling for developing business processes for Red Hat JBoss BRMS and Red Hat JBoss BPM Suite.

  • BPEL Designer - Orchestrating your business processes.

  • BPMN2 Modeler - A graphical modeling tool which allows creation and editing of Business Process Modeling Notation diagrams using graphiti.

  • Drools - A Business Logic integration Platform which provides a unified and integrated platform for Rules, Workflow and Event Processing.

  • jBPM - A flexible Business Process Management (BPM) suite.

JBoss Data Virtualization Development

JBoss Data Virtualization Development plug-ins provide a graphical interface to manage various aspects of Red Hat JBoss Data Virtualization instances, including the ability to design virtual databases and interact with associated governance repositories.

  • Modeshape - A distributed, hierarchical, transactional and consistent data store with support for queries, full-text search, events, versioning, references, and flexible and dynamic schemas. It is very fast, highly available, extremely scalable, and it is 100% open source.

  • Teiid Designer - A visual tool that enables rapid, model-driven definition, integration, management and testing of data services without programming using the Teiid runtime framework.

JBoss Integration and SOA Development

JBoss Integration and SOA Development plug-ins provide tooling for developing, configuring and deploying BRMS, SwitchYard and Fuse applications to Red Hat JBoss Fuse Service Works, Red Hat JBoss Fuse and Fuse Fabric containers, Apache ServiceMix, and Apache Karaf instances.

  • All of the Business Process and Rules Development plugins, plus…​

  • Fuse Apache Camel Tooling - A graphical tool for integrating software components that works with Apache ServiceMix, Apache ActiveMQ, Apache Camel and the FuseSource distributions.

  • SwitchYard - A lightweight service delivery framework providing full lifecycle support for developing, deploying, and managing service-oriented applications.

SOA 5.x Development

  • JBoss ESB - An enterprise service bus for connecting enterprise applications and services.

  • jBPM3 - A flexible Business Process Management (BPM) Suite - JBoss Enterprise SOA Platform 5.3.x compatible version.

All of these components have been verified to work with the same dependencies as JBoss Tools 4.2 and Developer Studio 8.

What’s Been Updated Since 8.0.3.GA?

Updates have been made to the Business Process tooling, Fuse Tooling, Data Virtualization and SwitchYard. See the Integration Stack 8.0.4 Release Notes for more details.

Released Tooling Highlights

JBoss Fuse Development Highlights

Fuse Tooling Highlights
  • Data Transformation, SAP and SwitchYard are now released!

Also see Lars Heinemann’s Blog for more Fuse Tooling insights.

SwitchYard Highlights

JBoss Business Process and Rules Development

Drools/jBPM6 Highlights
  • As part of this release, the Kie Navigator is added to the Drools component.

Data Virtualization Highlights

Teiid Designer Highlights
  • Added support for dynamic VDBs.

  • Performance improvements in the admin factory.

  • Lots of bug fixes.

Early Access/ Technical Preview Tooling Highlights

None! We’re happy to say that all JBDS 8/ Eclipse Luna compatible features are now released as production plugins.

The JBoss Tools website features tab

Don’t miss the Features tab for up to date information on your favorite Integration Stack components.

Installation

The easiest way to install the Integratin Stack components is to install JBoss Developer Studio Integration Stack from the Eclipse Marketplace via Help > Eclipse Marketplace…​

For a complete set of Integration Stack installation instructions, see Integration Stack Installation Instructions

Give it a try!

Paul Leacu.

An update to Red Hat JBoss Developer Studio 9 for Eclipse Mars are now generally available!

jbds9

What’s new?

This release is simply a rebuild of the JBoss Developer Studio 9.0.0.GA installer that bundles JBoss EAP 6.4.0, due to CVE-2015-7501. The rebuild includes a patched version of EAP 6.4.0.GA.

The standalone installer is unaffected and therefore required no change. Similarly, JBoss Tools users are also unaffected unless you manually downloaded and installed EAP 6.4.0. A patched version of the EAP 6.4.0.GA is available.

Previous announcements

For what’s new in this release of JBoss Tools 4.3.0.Final or JBoss Developer Studio 9.0.0.GA, see our previous GA blog announcement.

What’s next?

We are already working on the next maintenance release for Eclipse Mars - JBoss Tools 4.3.1.Beta1 and Red Hat JBoss Developer Studio 9.1.0.Beta1 will be available shortly.

We are also working on our first Eclipse Neon based builds. Try them out here:

Enjoy!

Nick Boldt

Over the past two years we have been working hard to rationalize and improve the support for different Hibernate versions in the JBoss Tools suite. This effort has resulted in real multiversion support but some of the changes may have an impact on the way how you tackle your Hibernate projects in JBoss Tools. Read on if you are a user of Hibernate reverse engineering tooling and of the Hibernate console configuration.

Why Did We Need These Changes in the First Place?

Already for a long time there was support for multiple Hibernate versions in JBoss Tools. When creating a console configuration for instance, it was possible to select the desired version using a dropdown box.

console-configuration-versions

After choosing the appropriate version for a console configuration, and using this console configuration for the reverse engineering of entity classes from the database, one can see below that effectively the selected version of Hibernate was used for the generation (in this case 4.0).

tools-generation-4.0.0

OK, so far so good. But when we needed to provide support for JPA 2.1 we stumbled across a major problem. We added the Hibernate 4.3 runtime which contains JPA 2.1 support and all seemed to be going well. Unfortunately we found that expanding the created console configuration for JPA 2.1 projects resulted in the error message below.

hibernate-configuration-error

Investigation of this problem showed that there was a mixup of Hibernate classes due to a mistake in the dependency graph between the different Eclipse plugins that contained the respective Hibernate runtime contributions. At this point the dependencies looked like the schema below.

old-dependency-situation

It turned out that, no matter what Hibernate version you chose for the console configuration, expanding the configuration in the Eclipse view was always using the Hibernate 3.5 classes exposed by the org.hibernate.eclipse.libs plugin. To summarize, some of the functionality of the Hibernate tooling in Eclipse was using the chosen version properly while the rest of the functionality was always using version 3.5.

OK This Looks Messy Indeed, How Did We Solve It?

So the problem with the schema above is the direct dependency of the org.hibernate.eclipse plugin (as well as some other of the Hibernate tools Eclipse plugins) on org.hibernate.eclipse.libs. This last plugin contains the Hibernate 3.5 runtime as well as some other related libraries and it effectively hides the Hibernate runtime classes that are contributed by the different org.jboss.tools.hibernateX_Y plugins.

The correct solution for this problem was, as is fairly classical in software engineering, to introduce an additional layer of indirection.

intermediate-dependency-situation

As you can see above a new org.jboss.tools.hibernate.runtime.spi plugin was created. In the Hibernate tools Eclipse plugins only classes and interfaces from this SPI plugin are used while all the immediate uses on core Hibernate classes were removed. A number of runtime provider plugins then implement these SPI interfaces and contribute their functionality by means of the Eclipse extension point mechanism. Also the org.hibernate.eclipse.libs plugin was removed.

As an additional step and to eliminate a lot of duplicated code in the different runtime plugins, we moved to a situation in which a lot of the code was moved to an abstract implementation of the Hibernate runtime providers. All the concrete uses of the actual Hibernate classes remained in the Hibernate runtime provider classes.

current-dependency-situation

How Does All of This Affect Me, Avid Hibernate Tools User?

The most important change that can possibly effect you is the removal of the org.hibernate.eclipse.libs plugin. Not only did this plugin contain the classes of the core Hibernate 3.5 runtime but it also included some Hibernate related classes that are considered optional. Among these where cache implementations such as Ehcache and connection pool implementations such as C3P0. As caching and connection pooling are not really relevant for the tooling and as there are way too many possible options for them to be all included in all of the Hibernate runtime providers, we decided to not include them anymore.

So if you include classes from these optional bundles in your Hibernate configuration file, you will probably bump against problems like this issue.

Assume like in this case that you want to use second level cache and use the Ehcache implementation. So you have written a Hibernate configuration file in which you have defined the session factory like as follows:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.h2.Driver</property>
        <property name="hibernate.connection.url">jdbc:h2:test</property>
        <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>

        <property name="hibernate.cache.use_second_level_cache">true</property>
        <property name="hibernate.cache.use_query_cache">true</property>
        <property name="hibernate.cache.region.factory_class">
            org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
        </property>

        <mapping class="..."/>
		...
    </session-factory>
</hibernate-configuration>

When you create a Hibernate console configuration in Eclipse using this definition, and you will try to expand it, this will result in an error like shown below. Evidently, because the org.hibernate.eclipse.libs plugin containing the org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory class was removed, a ClassNotFoundException will be the cause of this SessionFactory error.

session-factory-error

This problem can be solved in two possible ways. The first way is to add the jar files containing the missing classes to the project class path. As can be seen on the image below, the console configuration can now be expanded without an error.

add-to-project-classpath

One can argue that it is not a very clean solution to pollute the project class path with artifacts that are not really needed just to make the tooling run properly. This is a valid point and it is the reason why we have a second solution that is probably preferable.

In this case you can just edit the console configuration by using 'Edit Configuration' from the context menu. In the opened dialog, you can switch to the Classpath page and add the missing jar files. The image below illustrates this approach.

add-to-configuration-classpath

Conclusion

Because of the architectural changes that we implemented for the Eclipse Hibernate tooling, real support for multiple versions of Hibernate is now available and working properly.

The removal of the org.hibernate.eclipse.libs plugin introduced the possibility of missing some classes when working with the Hibernate console configuration in Eclipse. As we showed, this can be easily fixed by directly adding the libraries containing the missing classes on the class path of the console configuration.

Thanks for reading!
Koen Aers

JBoss Tools 4.12.0.AM1 for Eclipse 2019-06

by Jeff Maury on Jun 12, 2019.

Integration Tooling for Eclipse 2019-03

by Paul Leacu on May 30, 2019.

Quarkus

by Jeff Maury on May 13, 2019.

Looking for older posts ? See the Archived entries.
back to top