Skip navigation
1 2 3 4 5 Previous Next

JBoss Tools

121 posts

At JBoss Tools we created a java client that allows you to talk to the OpenShift PaaS: openshift-java-client. The library is already used in the OpenShift tooling in JBoss Tools, the Forge plugin and Appcelerators tooling for OpenShift.

This blog post will show you how to use okthis API in your very own java programs. We'll develop a command line tool that displays informations equivalent to what you get when running rhc domain show with the OpenShift command line tools: It displays basic informations about your user.

 

User Info
=========
Namespace: andre
  RHLogin: andre.dietisheim@redhat.com


Application Info
================
kitchensink
    Framework: jbossas-7
     Creation: 2012-08-10T11:24:13-04:00
         UUID: 8ad0d94f39aa4295a0049de8b8b5ef55
      Git URL: ssh://<SOMEID>@kitchensink-andre.rhcloud.com/~/git/kitchensink.git/
   Public URL: http://kitchensink-andre.rhcloud.com/


 Embedded: 
      jenkins-client-1.4 - Job URL: https://jenk-andre.rhcloud.com/job/kitchensink-build/

 

You'll find the sourcecode for this example at github: https://github.com/adietish/show-domain-info. All the code that is shown in this blog is contained within the Main class.

 

If you want to dig futher, you'll get a more complete example that includes jenkins in this wiki article.

Openshift-java-client 2.0

The openshift-java-client is a java library that allows java programs to talk to the OpenShift PaaS. It talks to the new OpenShift RESTful service and allows users to create, modify and destroy OpenShift resources: domains, applications, cartridges, etc.It is hosted on github at https://github.com/openshift/openshift-java-client and is available under the Ecilpse Public License.

 

Note:

Openshift-java-client 1.x was talking to the legacy service in OpenShift. 2.0 switched to the new RESTful service.

The legacy service is not maintained any more and will fade away at some point. Users of the 1.x client should migrate to the 2.0 client.

The migration should be pretty much without hassles. Even though 2.0 is a complete rewrite, the API stayed pretty much the same/very close.

Requirements

  • You need an account on OpenShift. (If you have no account yet, you'd have to signup first)
  • Make sure you have an OpenShift domain and some applications (to get some meaningful output)

Launch Parameters

To keep the implemenation simple, the program we're about to write, only accept 2 parameters on the command line:

  1. username
  2. password

 

Launching the program with maven would look like this:

mvn test -Dusername=<username> -Dpassword=<password>

Project Setup

We have to make sure that we have the openshift-java-client available on our classpath. The client library is available at https://github.com/openshift/openshift-java-client. You could clone the repo and build your own jar by telling maven to "mvn clean package". But even simpler is to add it as dependency to your pom, since the client library is available from central as maven artifact:

<dependency>
          <groupId>com.openshift</groupId>
          <artifactId>openshift-java-client</artifactId>
          <version>2.0.0</version>
</dependency>

 

Connect to OpenShift

After we did some basic command line parameter parsing (that we skipped here on puropose) we'd have to get in touch with the OpenShift PaaS. Using the openshift-java-client you'd tell the OpenShiftConnectionFactory to create a connection for you. To create this connection you'll have to provide some parameters:

Server url

First of all you need to give it the url of the OpenShift PaaS. You may either hard code it or ask the OpenShift configuration for it:

new OpenShiftConfiguration().getLibraServer()

The OpenShiftConfiguration class parses the OpenShift configuration files you may have on your machine (~/.openshift/express.conf, C:/Documents and Settings/user/.openshift/express.conf etc.). Those usually get created once you installed the rhc command line tools. In case you dont have any configuration yet, OpenShiftConfiguration holds some meaningful defaults and points to http://openshift.redhat.com. On the other hand, our configuration class also allows you to override settings by putting them to the system configuration as you would do if you want to switch to the OpenShift liveCD temporarly. You would then simply add the following to the command line when launching the java virtual machine:

-Dlibra_server=127.0.0.1

Client id

The connection factory also requires you to provide your very own client id. This client id is used when the openshift-java-client talks to the OpenShift REST service. It'll get included in the user-agent string that tells OpenShift what client it is talking to. We use the name of our example, "show-domain-info".

Username and Password

Last but not least, you also have to give it your OpenShift credentials, the ones we got from the command-line.

 

String openshiftServer = new OpenShiftConfiguration().getLibraServer();
IOpenShiftConnection connection = new OpenShiftConnectionFactory().getConnection("show-domain-info", "myuser", "mypassword", openshiftServer);

 

Once you have your connection you can get a IUser instance which will allow you to create your domain and applications:

IUser user = connection.getUser();

 

Print the User Infos

The first information block involves basic user informations. The username is available from your IUser instance:

System.out.println("RHLogin:\t" + user.getRhlogin());

 

The other value that we want to display, the domain namespace, is accessible from your OpenShift IDomain. We'll get it from the the user instance and print its id (namespace).

IDomain domain = user.getDefaultDomain();
System.out.println("Namespace:\t" + domain.getId());

Print the Application Infos

The second portion printed by "rhc domain show" is reporting your users applications. All OpenShift applications are held in a list within your domain. We simply get the list and iterate over it's entries:

for (IApplication application : domain.getApplications()) {

 

The required values - name, framework, creation time etc. - are now available within each IApplication instance:

System.out.println(application.getName());
System.out.println("\tFramework:\t" + application.getCartridge().getName());
System.out.println("\tCreation:\t" + application.getCreationTime());
System.out.println("\tUUID:\t\t" + application.getUUID());
System.out.println("\tGit URL:\t" + application.getGitUrl());
System.out.println("\tPublic URL:\t" + application.getApplicationUrl() + "\n");

 

An application may have several cartridges embedded (MySql, Postgres, Jenkins etc.). These cartridges are reported by by the application. We get the list of cartridges and inspect at each of them:

for(IEmbeddedCartridge cartridge : application.getEmbeddedCartridges()) {

 

We then want to know bout a cartridge's (IEmbeddedCartridge), name and url:

System.out.println("\t" + cartridge.getName() + " - URL:" + cartridge.getUrl());

 

That is it - you now have an app that can talk to OpenShift via its REST API. If you want to do more we also have this article that shows how to perform actual operations against your OpenShift applications. Hope you enjoy it and let us know what you build with it!

We released back in July a new version of JBoss Tools 3.3.1 and JBoss Developer Studio 5.0.1 which fixes the problem of installing on Eclipse 3.7.0 (Indigo) and makes it possible, but not recommended to install on Eclipse 4.x (Juno).

The SOA Tools are also now available from JBoss Central and we got news from the Fedora Java spin which includes parts of JBoss Tools. More below...

 

SOA Tools

The SOA Tools (jbpm, drools, modeshape, teiid, etc.) are available from JBoss Central in both JBoss Tools 3.3+ and Developer Studio 5+.

 

soatoolsincentral.png

To get them open JBoss Central and go to the Software/Update tab and they should be listed, ready to be installed.

 

The plugins have been updated to work with the latest release of JBoss SOA Platform and its components.

 

Eclipse 3.7.0 - you still use that ?

JBoss Tools 3.3.0 came out requiring Eclipse 3.7.1 because there was some rather nasty bugs we wanted to avoid to expose to users and we naively belived most would be on 3.7.1+ by now - but oh boy we were wrong.

 

It turns out that when we released the final version of JBoss Tools 3.3.0 our success install rate went up significantly (Yay!) but we also saw a skyrocketing level of errored installs (Not good). Looking at those error logs showed us that majority of Eclipse 3.7 (Indigo) users are still on the very first version, i.e. 3.7.0.

 

In a perfect world Eclipse P2 update mechanisim would let you update to Eclipse 3.7.1+ at the same time as installing plugins that requires/suggest to use a bugfixed version, but unfortunately Eclipse mechanism does not allow for this.

 

Therefore in this update we allowed JBoss Tools to depend on Eclipse 3.7.0 to make it installable, but Eclipse 3.7.0 users will now get a warning dialog on startup suggesting they should update their Eclipse to have a better experience.

 

How about Eclipse 4.x/Juno ?

JBoss Tools 3.3.x and Developer Studio is tested and supported on Eclipse 3.7/Indigo - but what if I want to use Juno ?

 

There are two options:

 

A) You can *try* use JBoss Tools 3.3.x on Juno - but we do not recommend this.

B) You can use the JBoss Tools 3.4.x nightly builds updatesite - this have been updated/adjusted to work with Juno and is the basis for the next major update of tools and Developer Studio.

 

In both cases your mileage will vary, but if you are up for it please do try out the nightly builds and report any issues found while using Juno with JBoss Tools.

 

Fedora Java Spin

Gerard Ryan have been doing his Google Summer of Code project about creating a Fedora Spin that would be good for Java developers. In that progress he took on the task on trying to package JBoss Tools, or at least parts of it so it could be installed "the Fedora way".

 

http://fedoraproject.org/static/images/fedora-logo.png

 

He actually succeded in making this happen and you can see his final report about this at his GSOC blog.

 

You can try out the full Fedora Java spin by downloading the ISO images from Gerard or if you are already running Fedora 17 or newer, you can try it out by running:

 

yum install eclipse-jbosstools

 

This will actually be installed into Fedora's version of Eclipse Juno, so that is third way to try Juno out with parts of JBoss Tools.

 

Hope you like that and if you find issues report it in our jra, but please mention if you are using the Fedora package since there are some slight differences.

 

Have fun,

Max

 

Almost two years ago we started including an opt-in ping-back functionallity to JBoss Tools and Developer Studio installations. The ping-back has in that time given us a lot of good and sometimes surprising information about our users.

 

In this blogpost I want to give you the highlights of these observations.

Disclaimer

Before I start I must underline that we do not track any individuals data and it is all opt-in, i.e. users need to explicitly say “Yes - please send pings” for us to pick up data.

 

The data below is not for all users of our tools, it is only for those who have said yes to participate - but with the amount of pings we do get (currently 28K/day, 6+ million/year) I believe it is a signficant high part of our user base to at least give an idea about the trends and divisions of our user base.

 

I’ve tried my best to validate and ensure I report correct findings - please leave a comment if you believe I’ve made an error or there is some other metric you would like to know about.

 

And finally - the content, observations and conclusions in this blog are my personal views based on my intepretation of the analytics data I have access to.

Methodology

The way our ping-back works from a highlevel is that on startup of an Eclipse instance a HTTP GET is made to Google Analytics and here the data is collected as if it was a web page hit (i.e. Google Analytics gathers information from the network connection, HTTP headers and URL parameters).

 

We only make maximum one ping every 24-hour per Eclipse Instance and it is only on startups. Thus if you have your eclipse instance running for six days, you only make one ping in those six days.

 

I’ve used Google Analytics web UI and data extraction features as a basis for the findings below.

Operating Systems

If you should be in doubt, Microsoft Windows is by far the most dominant desktop OS out there when it comes to desktop OS, and this is no different for users of JBoss Tools.

 

Here is Operating Systems for June-July 2012:

osjunejuly2012.png

 

Even if you separate out Windows XP on its own then Windows XP users outnumber Linux + OSX users combined.

 

Operating Systems for June-July 2012 with XP separated out.

osjulywxp.png

 

I saw these same splits in our usage tracking (Windows: ~80%, Linux: ~15% OSX: ~5%) and I was worried we were having some bug in our ping-back code.

I therefore got access to Google Analytics for several of our jboss.org project sites including all of community.jboss.org and here the splits are more or less the same no matter how you slice and dice it. Thus either this split is true or Google Analytics is wrong everywhere.

What surprises me though is that Windows is even growing over time, both on site visits and JBoss Tools ping back:

osgrowth2years.png

I’m sure the growth of Windows here does not resemble the growth of operating systems world wide, I believe it is more a function of more and more “real world” industrial users picking up and using JBoss technology.

 

I know it surprises alot of people both inside and outside of my current employer (Red Hat) who would like to think Linux is not just primarily a server side OS anymore; and I know of a lot of conference attendees who claims OSX is “everywhere”. It might be everywhere at conferences, but not out there in the “real world”.

Linux Distributions

Once you get pass the fact Windows is by far the biggest desktop platform then it is interesting to look at how the various Linux distributions spread out.

The following charts shows a summary of Linux distributions as detected by our ping-back code to detect Linux distributions.

 

Our ping-back report back the distribution name and version as found in various distribution specific files and I’ve taken these reports and stripped out the versions and just looked at the distribution name.

 

I unfortunately do not have any way of confirming the validity of these numbers because Google Analytics does not report this level of detail for specific websites and looking at distrowatch.com the numbers are very different. Probably the difference should be explained in difference of Desktop vs. Server, Linux users vs. JBoss/Middleware users.

In any case please do take these uncertainties into account when considering these numbers.

 

The graphs below is for the period June-July 2012:

linuxdistro-table.png

 

linuxdistro-chart.png

 

Countries

One of my favorite images from Google Analytics is the map showing city activity across the world.

 

City Activity 2011-2012 ( a full year )

cities2011-12.png

 

That is showing JBoss Tools being used across 6 continents, 177 countries in 9644 cities; and as you can see it is not United states nor Europe that is lighting up the most.

Most active cities are in areas such as Brazil, China and India, which also is revealed in the Top 10 countries list for 2011-2012.

top10countries.png

 

I apparently need to learn to write blogs in Portuguese and Mandrin!

 

I was asked how the Operating System varies across countries and that was a bit trickier to extract because Google Analytics starts sampling when the dataset gets too big - but here is a table showing OS per Top 10 countries based on 80% of data collected in June 2012.

country_x_os_80pct_2011_12.png

 

It’s interesting to see United States OS X usage be almost twice as high as any other country and countries like China and South Korea having ~98% usage of Windows.

Where as countries like Brazil has a much higher percentage using Linux.

 

Users from Spain and Italy have same Linux usage but Italy has twice as many Mac users.

Screen resolution

In the last year, we’ve seen no less than 7995 different screen resolutions.

The number was much higher than I expected, and I believe this is caused by differences in how Java/SWT differs across various OS releases on how the desktop resolution is reported; thus the Top 10 screen resolutions is a rough estimation.

top10screensizes.png

 

What is interesting though is that the number of observed 1366x768 screen resolutions have grown much more than other screen resolutions.

screenresolutionovertime.png

 

It’s as if everyone started to get more and more HD laptops/displays the last couple of months.

 

One thing I did notice was that there is a few (or just one?) user that has some very large multi-screen setups. Tried to visualize this by showing smallest (640x480), most common (1366x768) and largest observed screen resolution (11520x2400) relatively to each other in this diagram:

screensizes-scale5pct.png

 

The large resolutions are probably multiple monitors, not just one single monitor. My guess is the largest reported is a couple of WQUXGA screens. think I got screen envy!

Java version

Java 7 was released “recently” and I got more than a few request asking why we still support Java 6 when it is EOL and Java 7 is the new kid in town.

The answer is in the following graph. It shows the uptake of the most popular Java versions over the last year.

javaversionovertime.png

 

You can see Java 1.6.0_26 overtake 1.6.0_24 in July 2011 and similar 1.6.0_29 takeover in November 2011 and finally 1.6.0_31 is the current big winner.

Java 1.7 had only little uptake, and its only recently Java 7 is above 20% usage.

 

The current %’s shows a clear 76% usage of 1.6, following with Java 1.7 with 22% and then a few (2%) is still using Java 1.5 - we, even had a few Java 1.8 users but they are still below 0.01% thus not visible on any of the graphs.

javaversionsjunejuly2012.png

 

I expect over the next year Java 1.7 will have a bigger uptake, but I would not bet on it overtaking Java 1.6 anytime soon.

Conclusions

One nice thing to conclude from our usage tracking is that we can see that JBoss Tools keeps growing and has more and more uptake and I’m personally very happy to see that.

Beyond that my primary lesson from the gathering of analytics is that Windows XP is bigger than Linux and OS X combined. Windows overall is where the majority of real-world users are.

 

There are probably also lot of interesting political and world-economic comments that can be made about the Top 10 countries usage of Operating Systems. But this is just JBoss Tools users, thus not sure how this maps to the world-arena but one thing I do think we can conclude is - each country has very different composition of users/demographics; but they all primarily uses Windows.

 

Therefore if you are doing any work on tools, frameworks or applications that relate to JBoss user/developer, please remember to test it on Windows, including Windows XP no matter how much you hate this OS your users are using your applicaiton/frameworks to make their own life easier.

 

Before anyone put words in my mouth any say this means Linux and OS X users should be ignored because they are such a small percentage - that is not true since the uptake of Windows over time shows that Linux/OSX is where a good portion of the “early adopters” are.

 

That is it for this time, let me know what you think - does this match your expectations ? Could we improve the dataset/statistics somehow ?

 

Have fun,

Max

Dont get your fingers dirty, use the JBoss Tools for OpenShift

OpenShift is the PaaS offering from Red Hat. It gives you your personal application platform on demand. With OpenShift, there's no need to look for hosting and application stack. OpenShift provides you those within minutes, whenever you need them.

JBoss Tools for OpenShift offers a feature complete environment to work with OpenShift. From developing to deploying, JBoss Tools provides you a fully fledged environment for your project and aligns with the standard workflows within Eclipse. It allows Eclipse users to stick to their favorite IDE and deal with OpenShift within their developement environment. Especially the OpenShift server adapter mimics an Eclipse WTP compliant way of deploying to OpenShift and hides the complexity, that you'd otherwise had to handle when publishing bare metal (which is by using Git).

 

 

 

Get the tools, get started

The release blog shows you extensively how to get JBoss Tools from our update site, from the Eclipse marketplace or even how to install the JBoss Developer Studio. If installing JBoss Tools, you'll have to make sure you choose at least the OpenShift bundles on our update site:

 

update-site.png



Once you have JBoss Tools installed, you'll spot our wizards either in JBoss Central or in the Eclipse Wizards:

central.png

 

All you need to get started quickly is offered within this wizard. It'll create your application platform, import a starter project and create a server adapter that you may use to publish to the PaaS.

OpenShift of course requires you to have an account. If you have none yet, the wizard will drop you to the signup form by hitting the link that is displayed on the first wizard page.

 

signup.png

 

Once you have your account, you'll be ready to go, ready to get amazed by JBoss Tools and OpenShift.

 

A very basic workflow

 

OpenShift is a PaaS, a Platform as a Service. As such it offers you your personal application stack and it does this on demand. A range of standards runtimes are offered to you whenever you need them. Working with the PaaS is as simple as importing a stub (the starter application) to your workspace, changing and publishing it again:

 

openshift-workflow.png

 

Create your application runtime

It all starts by creating your own application runtime. In the OpenShift Application wizard, set a name and choose the application (runtime) you need:

 

application.png

 

OpenShift offers a wide range of standard runtimes. You may to choose among php, ruby, phython, nodejs etc. Java developers will be most amazed to see that OpenShift offers a fully Java EE 6 compliant application server: the blazing fast JBoss AS 7.1.

 

application-types.png

 

You may also add different extensions to your platform ranging from SQL- (like MySQL or Postgres) or NoSQL-databases (like MongoDB) up to your very own CI server (jenkins).

 

application-cartridges.png

 

Once you made up your choices and finish the wizard, it'll create your OpenShift application, wait for it to become reachable and import it's initial content - a starter application - to your Eclipse workspace. Looking into your Project Explorer or Navigator, you'll spot the new project that the wizard imported. It has the very same name as the OpenShift application. In case of a JBoss AS7 runtime, the starter app is a maven artifact and the project we import to your workspace will have the name that's configured for the maven artifact.

 

imported-project.png

 

Push to build and deploy

 

The new project in your Eclipse workspace is where you apply your changes. It is shared with a git repository on your local machine. This repository is a clone of the git repository within your OpenShift application.

 

application-git-repository.png

 

Deploying this project to the PaaS is as simple as pushing the local repository to it's origin, the OpenShift git repository. OpenShift will then build and deploy your application to the application runtime.

In case of a Java application, OpenShift relies on a maven based build, that is triggered with each git push:

 

application-build.png

 

Server Adapter to the rescue

When dealing with git, you have to deal with a brilliant but rather complex code versioning system. Even if you're familiar with git, there's still room to reduce the number of manipulations when publishing.

Eclipse WTP server adapters historically allow you to interact with your server. This would typically be some local or remote server you'd have file- or SSH-based access to. We adapted this handy concept and implemented a variant that would work with OpenShift. This server adapter hides the complexity of dealing with git and allows 1-click publishing to the cloud.

 

The OpenShift Application wizard sets the adapter up when you create your application and import the starter project to your workspace.  Our Server adapter is bound to the OpenShift project in your workspace and it'll do the git operations for you. 

 

server-adapter.png

 

When publishing it will deploy the changes in your OpenShift project to the PaaS. It'll hide all the complexity that is inherent to git. It will commit your changes to your local clone and push them to the git repository of your OpenShift application (the origin).

 

server-adapter-publish.png

 

Deploy my very own project!

 

Importing the starter application to your workspace is the most simple usecase we provide. I bet most users already have a project that they'd want to deploy though. We of course also provide this ability in our OpenShift Application wizard.

 

 

Our little screencast shows you the steps when starting with your very own project. It uses the kitchensink example to demonstrate how this would occourr. You may get it on github:

 

Kitchensink example project:

 

https://github.com/adietish/kitchensink.git

 

Have your project ready

You first have to get your project to Eclipse. We only support git-shared or non-shared project though. A typical usecase would be to have your project on github or in any other git repository.You then simply clone it's repository to your local machine (using EGit or the command line) and import the project within it to your Eclipse workspace.

 

JBoss Tools, configure my project

You then create your OpenShift application in our wizard, provide the name, type and eventually additional cartridges. You then switch to the second wizard page and tell the wizard that you dont want to create a new project in your workspace. You tell it to use your project instead.

 

use-existing.png

 

The wizard will warn you about upcoming changes to your project and ask you to confirm:

 

merged-cannotundo.png

Oh my project, how you changed!

We then add OpenShift specific configurations to your project. These changes unfortunately cannot be undone. You'd have to provide your own means (ex. a separate branch) if you dont want these additions in your developement code The changes we apply are the following:

 

All changes:


  • eventually create a git repository and commit your project to it
  • add a .openshift folder with openshift specific hooks
  • add a deployments folder
  • add the Eclipse specific files (.project, .classpath etc.) to the .gitignore
  • add openshift-profile to the pom
  • add OpenShift git repo as remote to your local git repo

merged-configuration.png

 

Since publishing to OpenShift is git pushing to it, we'll make sure your project is shared to a git repo. We therefore eventually create a git repository for your project if there's none yet and add your project to it.

We add the .openshift folder which may contain OpenShift specific configurations and tweaks (like custom build-scripts, markers, cron entries etc.). We also create a deployments folder which OpenShift will use to build to. You may also add additional artifacts to it.

We then tweak .gitignore and add the Eclipse specific files so that they dont make it to the git repo by default.

 

merged-configuration-gitignore.png

 

For maven-based java projects we tweak the pom and add an openshift profile to it.

 

openshift-profile.png

 

The openshift profile is what the PaaS is using when building your project on the PaaS. The profile we add is telling maven to create the war in the deployments folder. The deployments folder is where JBoss AS7 is expecting and picking new deployables from. Adding the profile makes sure that your project is deployed when it is built.

 

We'll also then add the OpenShift application git repo as remote to the git repo of your local project. This will allow you to push your project to OpenShift without knowing about the exact url you'll have to push to. All you have to know is what name the OpenShift repo is stored at.

 

merged-configuration-remotes.png

 

We're storing the OpenShift application git url as "openshift" in the remotes known to your local repo. You may of course tell the wizard to use any name you like:

 

merged-configuration-remotes-configure.png

 

Push me up, Scotty

 

Once we configured your project, we commit the changes to your local git repo (either your project was already shared with a git repo or we created one for you). To now deploy your project to OpenShift, you'd have to go to the Servers view, choose the OpenShift server adapter (that we created for you) and tell it to publish. The server adapter will then detect that the local project is ahead of the remote one and that publishing would only be possible when overriding the remote starter application. It'll ask you to confirm this step:

 

merged-pushforce.png

Once the publishing is done, you'll have your project running on OpenShift!

 

Multi-module maven projects

 

Our OpenShift Application wizard also supports multi-module maven projects. You'd simply have to make sure all modules are nested within a parent project and choose the parent project as existing project (multi vs. multi-web, multi-ejb, multi-ejb in my screenshot) in the wizard:

 

multi-ear.png

 

multi-ear-wizard.png

 

Note:

 

in case your multi-module maven project is an ear, there are still slight limitations in our tooling for the moment. You may easily work around them though. You'd have to alter the maven profile in the pom of your parent-projec and replace the maven-war-plugin by the maven-ear-plugin:

 

maven-ear-plugin.png

 

You may read about it in all details and track our progress on it in JBIDE-12252

 

My maven project is not in the git repo root

When deploying an existing project to OpenShift, you'd have to tell the wizard in JBoss Tools about your project. Your project would have to comply to a basic layout though. We expect the pom in the root of your git repository. If this is not the case, then you'd have to take an alternative approach when publishing. Publishing then gets as easy as drag and dropping your project to the adapter.

 

 

In our screencast, we show you how to proceed. We use the the ticket-monster example project which is available at github:

 

Ticket-monster example project:

 

https://github.com/jboss-jdf/ticket-monster

 

Have your project ready

The first thing to do is to import your application to your Eclipse workspace. The only requirement we have is that your project shall be Eclipse WTP compliant. It may be a Dynamic Web or a Maven project. Maven projects are turned into Eclipse WTP projects if you have m2e-wtp installed when importing them (m2e-wtp bridges the gap between Eclipse WTP and maven, it turns any maven project into a WTP compliant project).

In the ticket-monster example, the maven project is nested into the demo folder:

 

draganddrop-nested.png

 

We import with the Eclipse Maven import wizard pointing it to the demo-folder:

 

draganddrop-import-maven.png

 

and get the demo-folder imported to our workspace:

 

draganddrop-imported.png

Create your OpenShift application

Once you have your project ready you'll go and create the OpenShift application that will host your application. Launch the OpenShit Application wizard in JBoss Tools, tell it to create a jbossas-7 application and let it import the starter app, as shown in the first paragraphs of this blog.

 

OpenShift, here I come

The OpenShift Application wizard imports the starter application to your workspace and creates a server adapter for it:

 

draganddrop-starter.png

draganddrop-adapter.png

 

You are then ready to publish your project. Simply drag and drop it to the OpenShift server adapter in the Servers view. Your project will then get published to OpenShift.

Once  the publishing is done, you'll notice that the server adapter now has 2 modules: the starter application and your project:

 

draganddrop-new-module.png

The server adapter actually compressed your project to a war and dropped it to the deployments folder within the starter application:

 

draganddrop-war.png

 

It then committed this addition and pushed the starter application to OpenShift. The JBoss AS7 then noticed the new war and deployed it. Simple as that.

 

 

But hey, my project does not work!

 

Commit log

If your deployment fails JBoss Tools offers some goodies that allow you deeper insights into what's happening on the PaaS.

Pushing to the PaaS triggers a build and the deployment of your project. Both operations are logged and make it to the commit log. When the OpenShift server adapter finished publishing (git pushing), it'll show you the console with the commit log. This will show you in a first step if the push, the build and the deployment worked fine:

 

application-build.png

 

Inspect your server logs

We also offer you simple access to your server logs. You'll find an appropriate entry in the context menu of your OpenShift server adapter. Simply pick "OpenShift->Tail files"

 

tail-files.png

 

It allows you to inspect the logs of your server within the Eclipse console:

 

tail-files-console.png

Look into the jboss as7 management console

JBoss AS7 has a management console that's may be reached on port 9990. OpenShift only allows access to a limited set of ports from the outer world. Nevertheless OpenShift allows you to forward ports to your local machine. Using port-forwarding allows you to access the management console that's running on the JBoss A7 that is running on OpenShift.

 

Go to the OpenShift server adapter and pick "OpenShift->Port Forwaring".

 

port-forwarding.png

 

The upcoming dialog will list you all ports that may be forwarded to your local machine. Simpley hit "Start All" and they'll get available at localhost on your machine.

 

port-forwarding-dialog.png

 

You may then access the management console of your JBoss AS7 in a browser on your local machine.

 

management-console.png

 

Debug your application with the Eclipse Debugger

 

 

JBoss Tools even allows you to debug your OpenShift Application in the Eclipse debugger. You'll first have to enable debugging on your OpenShift application. You'll do this by adding a marker in the .openshift folder of your project. Create an empty file enable_pda in .openshift/markers. Commit it and tell the server adapter to publish your project.

 

enable-jpda.png

 

Now that debugging is enabled, the debugging port of the remote JVM will get available and visible in your forwarded ports. Pick "OpenShift -> Port Forwarding" in the context menu of your server adapter and double check that the port 8787 is available. You'd eventually have to refresh the list of available port in case you already had it running before. Now Start All to get all ports (and the debugging port) forwarded to your local machine.

 

enable-debugging-port.png

You're almost there. The last step is to tell Eclipse to connect it's debugger to your forwarded port. Go to the Debug Configurations in Eclipse and create a new configuration for a Remote Java Application. As soon as you hit Debug, the execution of your application on OpenShift will halt at the breakpoints you set in your Eclipse.

 

enable-debugging-debugconfig.png

I'm extremely proud to be able to announce that both JBoss Tools 3.3 and Developer Studio 5.0 final releases are now available.

jbosstolsdevstudio.png

Final GA

Developer Studio: [Download] | Tools: [Download] [Update Site] | [What's New] [Forums] [JIRA] [Twitter]

 

JBoss Tools is a set of plugins for Eclipse that complements, enhances and goes beyond the support that exists for JBoss and related technologies in the default Eclipse distribution.

 

JBoss Developer Studio is a fully bundled Eclipse distribution which not only includes the majority of JBoss Tools but also all its needed dependencies and 3rd party plugins allowing for an easy one-click and no-fuss installation.

 

If you are into doing your own bleeding edge eclipse plugin assembly, JBoss Tools is for you; if you are more into having something that "Just Works" then JBoss Developer Studio is the way to go.

 

Installation

 

JBoss Developer Studio comes with everything pre-bundled in its installer. Simply download it and run it like this:

 

java -jar jbdevstudio-<installername>.jar

 

Note: if you are on Windows or Mac OSX 64-bit we recommend you ensure to select the 32-bit option in the multi-platform installer to get Visual Page editor working and use much less memory.

 

 

JBoss Tools requires a bit more:

 

This release requires at least Eclipse 3.7.2 but we recommend using the Eclipse 3.7.2 JEE Bundle since then you get most of the dependencies preinstalled.

 

Once you have installed Eclipse, you either find us on Eclipse Marketplace under "JBoss Tools (Indigo)" or use our update site directly.

 

The update site URL to use from Help > Install New Software... is:

http://download.jboss.org/jbosstools/updates/stable/indigo/

 

Please note that the URL above is for the stable releases, if you use the development update site (http://download.jboss.org/jbosstools/updates/development/indigo/) that will work too. Only difference is that the development site will contain beta/CR releases too.

 

Note: SOA tooling for BPEL, Drools, Guvnor, jBPM, ESB, Modeshape, pi4soa, Savara, SwitchYard & Teiid are no longer included in the JBoss Tools release. They will become available separately later.

 

A Year of Features

The amount of features and new improvements in this final is awesome - here is a little overview:

 

Slim & Fast Universal Installer

The installer for JBoss Developer Studio is now a multiplatform installer. Allows you to just download one installer no matter what OS you are running. And the installer is smaller and faster to download and run than previous versions.

 

JBoss Central

We wanted to make it easy for new users to get started with JBoss technology and for existing users have a place to get more information and keep uptodate on what is happening in the JBoss Community. That place is called JBoss Central.

 

https://dl.dropbox.com/u/558690/devstudio5releaseimages/jbosscentral.png

 

Central shows up at startup (you can disable it if you want) but is also available with a quick click in the toolbar. Besides having blogs, news and documentation links it also serves as a way to start one of the six project wizards

which help you get started with JBoss technology such as CDI, Richfaces, Errai/GWT, Spring on AS etc.

 

Central also has a second tab called "Software/Update" where you can easily install tested and verified plugins to work with JBoss Tools and within Developer Studio.

 

https://dl.dropbox.com/u/558690/devstudio5releaseimages/softwareupdate.png

New Server Adapters

 

We've extended our support for JBoss servers to include JBoss Enterprise Platform 6, JBoss AS 7.

We continue to also work with the previous versions of application servers making it possible to develop, run and debug both new and older applications.

 

https://dl.dropbox.com/u/558690/devstudio5releaseimages/serveradapters.png

 

There is also an OpenShift server adapter to integrate with Red Hat OpenShift PaaS, more on that later.

 

We also continue to have the Deploy Only server which allows you to use our incremental and flexible server adapter features together with any server that supports hot deployment.

Furthermore all of these server adapters support remote deployment via any filesystem protocols supported by Eclipse Remote System deployment such as SSH or FTP.

 

One of the new features in this area is that servers now no longer need to be started by the tools, if a server is already detected as running or you have enable "Server is externally managed" then

JBoss Tools server adapters will just connect to it and do its deployments as configured - allowing you to work with the tools in  many different environments.

Maven

One of the big new additions is the full support and integration of m2e for users of Maven projects. We did not just include m2e, we went ahead and improved on it and added better support for the frameworks and features of Maven we found to be useful.

 

We have a lot of Maven improvements.

 

  • Maven Profile Selection - dialog to quickly enable/disable profiles on your Maven projects ( especially useful to switch between Arquillian server profiles )
  • Endorsed Libraries Classpath Container - if your Maven project uses endorsed libraries we setup a matching classpath that gets priority over the JDK classpath.
  • Tons of framework configurators - we enable the matching tooling in eclipse if your Maven project uses one of the following frameworks:
    • Hibernate/JPA
    • JSF
    • CDI
    • JAX-RS
    • Seam
    • Portlets.
  • Configure repositories in settings.xml - "Configure Maven Repositories" allows you to easily add and remove repositories from your Maven settings.xml; available as a quickfix on missing dependencies error markers.
  • Materialize Library - Allows you to copy all the jars found in a Maven classpath container into a directory. Great if you have a Maven example but would rather use it with pure Eclipse or some other build system.
  • Automatic Source Lookup for Server runtimes based on Maven metadata - point Source lookup to your server directory with jars and it will locate the matching source based on maven metadata; can be enable to be automatically done for JBoss runtimes.

 

And then of course m2e-wtp, the feature that configures Eclipse Web Tools based of your pom.xml had a lot of features improved and added. The m2e-wtp also is moving to eclipse.org to be part of future Eclipse release trains.

 

Furthermore we've released m2e configurators to m2e marketplace to improve configuration of Annotation Processing, wro4j - javascript optimization and finally supporting projects that configure eclipse JDT as their compiler.

 

All in all, if you want to use Maven with Eclipse, JBoss Tools makes your life easier!

OpenShift

OpenShift also came around during the last year. OpenShift is a PaaS with a free offering that includes support for running applications written in Java, Ruby, Node.js, Python, PHP, Perl and more.

 

The great thing about OpenShift is that you can easily get up and running with just a webbrowser, git and SSH while using command line tools - very simple and powerful.

We wanted to bring this simplicity and power to the users of Eclipse and that is what our OpenShift Tooling does.

 

When you have an account at OpenShift you can easily browse, create and manipulate your OpenShift applications and cartridges. OpenShift supports PHP, Perl, Python, Node.js, Java and if that is not enough you can use the Do-It-Yourself cartridge. You can easily open a webbrowser showing your application, monitor remote log files, inspect environment setup and start Port Forwarding allowing for remote debugging and remote browsing of databases and Jenkins instances.

 

https://dl.dropbox.com/u/558690/devstudio5releaseimages/openshift.png

 

The OpenShift tools is all compatible with the command line tooling but also completely independent of it allowing you to start with the tools that fit your needs first and then mix and match as you see fit.

 

For the release we've create a "Getting started with OpenShift" video:

 

 

 

Forge

If you like Forge you will like JBoss Tools for its Forge Console which let you to use Forge in context of Eclipse and have them coexist and interact. The console will open and show the files/projects you edit/create in Forge and the console can also let Forge track the selection you have in Eclipse.

 

forgeconsole.png

Browser Simulator

 

BrowserSim can be started with one-click from the IDE, showing instantly the selected file or URL in a mobile browser simulator. The simulator has skins and layout dimensions for a range of pouplar mobile and tablet devices. You can rotate the device to see how your application looks and how it is reacting to such size and layout changes.

 

https://dl.dropbox.com/u/558690/devstudio5releaseimages/browsersim.png

Hibernate

 

Hibernate Tools now supports multiple versions of Hibernate - you can now use it together with Hibernate 3.3-3.5, 3.6 and 4.0/4.1.

 

https://dl.dropbox.com/u/558690/devstudio5releaseimages/hibernatemultiy.png

JAX-RS

 

If your application uses JAX-RS annotations there is now a node in the project explorer that allows you to easily navigate to your various Rest endpoints. The JAX-RS tooling will also validate your annotations (mismatched names etc.) and provides code completion.

 

http://docs.jboss.org/tools/whatsnew/ws/images/JAX-RS-WS-Tester_Run_As.jpg

 

The JAX-RS integration allow to easily "run" your endpoints by making sure the server is running and then opening the URL in the Webservice Tester for further investigation/testing.

 

And More...

Seam 2.3.x support, CDI tooling have great improvements, incl. support for DeltaSpike, the visual page editor is faster than ever, bugfixes, overall awesomeness and the list goes on.

You can see the full list of new and noteworthy on the New and Noteworthy page

 

Does it Juno ?

Since the first version of Eclipse Juno is arriving soon it is worth mentioning that JBoss Tools from its updatesite can be installed on top of Juno.

It is though not guaranteed everything works, we know that especially Hibernate Dali/JPT integration have issues since here the API has changed greatly.

But if you are a Juno early-adopter then do please try run JBoss Tools on it and if you find issues let us know in the forum or on JIRA.

 

Then we will use the input for the next revision of JBoss Tools which will start shortly.

 

Hope you like it, and remember:

 

Have fun,

Max

The release candidate of JBoss Tools and Developer Studio is now available - mainly with bugfixes but also a few nice improvements for AS 7, OpenShift and Maven integration.

jbosstolsdevstudio.png

CR1

Developer Studio: [Download] | Tools: [Download] [Update Site] | [What's New] [Forums] [JIRA] [Twitter]

 

JBoss Tools is a set of plugins for Eclipse that complements, enhances and goes beyond the support that exists for JBoss and related technologies in the default Eclipse distribution.

 

JBoss Developer Studio is a fully bundled Eclipse distribution which not only includes majority of JBoss Tools but also all its needed dependencies and 3rd party plugins allowing for an easy one-click and no-fuss installation.

 

If you are into doing your own bleeding edge eclipse plugin assembly, JBoss tools is for you; if you are more into having something that "Just Works" then JBoss Developer Studio is the way to go.

 

Installation

 

JBoss Developer Studio comes with everything pre-bundled in its installer. Simply download it and run it like this:

 

java -jar jbdevstudio-<installername>.jar

 

Note: if you are on Windows or Mac OSX 64-bit we recommend you ensure to select the 32-bit option in the multi-platform installer to get Visual Page editor working and use much less memory.

 

 

JBoss Tools requires a bit more:

 

This release requires at least Eclipse 3.7.2 but we recommend using the Eclipse 3.7.2 JEE Bundle since then you get most of the dependencies preinstalled.

 

Once you have installed Eclipse, you either find us on Eclipse Marketplace under "JBoss Tools (Indigo)" or use our update site directly.

 

The update site URL to use from Help > Install New Software... is:

http://download.jboss.org/jbosstools/updates/development/indigo/

 

Note: SOA tooling for BPEL, Drools, Guvnor, jBPM, ESB, Modeshape, pi4soa, Savara, SwitchYard & Teiid are no longer included in the JBoss Tools release. They will be available separately.

 

JBoss AS 7

The server adapter for JBoss AS 7 had a series improvements done in its handling of remote management and JMX connections. One thing that is relevant is that because of AS 7.1 Secure by default approach when you launch remotely the management services are not autoatmically exposed. We keep that secure-by-default in the tools, but now also provides a simple checkbox to allow you to expose the management service when we launch it to actually remotely manage the server.

 

https://issues.jboss.org/secure/attachment/12354382/JBIDE-11921.png

 

Of course just exposing the port does not make it fully available before you have added a user to the server. You can read about how to do that in this blog.

 

And finally the server adapter now works with IPv6, allows deploying outside of the deployments folder and it does not choke on a space in the server part - Hurray!

 

OpenShift, now faster and more patient

One of the most common bug report we got in the Beta's (thank you for the feedback!) was that when creating OpenShift applications our wizard would time out and you would have to manually import the project again. We now have extended the timeout period to three minutes to accomodate for overloads, network latency etc. but also given you the option to wait some more for the OpenShift provisioning to be fully done.

 

A new feature of the application creation wizard is also to be able to set the size of the Gear your application will run on and to enable scaling for your applications.

http://docs.jboss.org/tools/whatsnew/openshift/images/gears-and-scaling.png

Mind you that the list of possible gears depends on your users permissions.

 

Various actions like Tail Files, Environment variables and Port Forwarding which previously were only available in OpenShift Explorer is now also available from the OpenShift server adapter.

 

http://docs.jboss.org/tools/whatsnew/openshift/images/server-adapter-actions.png

 

And for those users with large set of applications or slow networks we've made the loading of OpenShift metadata more incremental giving you faster feedback,especially on networks far away from the OpenShift servers.

 

Maven and Endorsed Libraries

If you have ever had to fight with using JavaEE 6 Webservices on Java 6 with Maven and Eclipse at the same time you know what a pain having to use that combination can be because JavaEE 6 Webservices are actually using libraries that are not available before Java 7. Meaning you have to configure and setup endorsed libraries in Eclipse, which actually does not have such a feature exposed on projects, but only at the JVM level setup. Thus its "easy" for running applications but not when compiling.

 

In Maven there are various tricks to solve this and none of them are obeyed/understood by m2eclipse - but not anymore.

 

http://docs.jboss.org/tools/whatsnew/images/endorsed_libs.png

 

We've added a Maven configurator which will look for the common tricks to set and configure endorsed libraries and when they are found inject an "Endorsed Library" classpath container with the approprate classpath entries.

 

Allowing you to not have to worry about this anymore when using Maven + Eclipse. Fred writes more in detail about how this works in What's New

 

Pixel Density

And an example of where the little details matters comes that BrowserSim now has controls for pixel density allowing you to get a better and closer representative layout of your mobile applications.

 

http://docs.jboss.org/tools/whatsnew/vpe/images/3.3.0.CR1/pixel-ratio.png

 

 

...and more

 

As usual screenshots and more explanation of what is new are available from the What's New site!

 

Let us know what you think and remember that Xavier and I will be showing a lot of these features at JUDCon and Red Hat Summit w/JBoss World end of this month with a GA release. See you there ?

 

Have fun,

Max

Beta3 of JBoss Tools and Developer Studio is now available with a good set of bugfixes but also a good set of new improvements and features in the area of OpenShift, Maven, BrowerSim, GWT, Annotation Processing and it even now come with easy installable source features for easy debugging and hacking. 

jbosstolsdevstudio.png

Beta3

Developer Studio: [Download] | Tools: [Download] [Update Site] | [What's New] [Forums] [JIRA] [Twitter]

 

JBoss Tools is a set of plugins for Eclipse that complements, enhances and goes beyond the support that exist for JBoss and related technologies in the default Eclipse distribution.

 

JBoss Developer Studio is a fully bundled Eclipse distribution which not only includes majority of JBoss Tools but also all its needed dependencies and 3rd party plugins allowing for an easy one-click and no-fuzz installation.

 

If you are into doing your own bleeding edge eclipse plugin assembly, JBoss tools is for you, if you are more into having something that "Just Works" then JBoss Developer Studio is the way to go.

 

Installation

 

JBoss Developer Studio comes with everything pre-bundled in its installer. Simply download it and run it like this:

 

java -jar jbdevstudio-<installername>.jar

 

Note, if you are on Mac OSX 64-bit we recommend you ensure to select the 32-bit option in the multi-platform installer to get Visual Page editor working and use much less memory.

 

Similar if you are on Windows 64-bit then use a 32-bit JDK to get 32-bit version running.

 

JBoss Tools requires a bit more:

 

This release requires at least Eclipse 3.7.1 but we recommend using the Eclipse 3.7.2 JEE Bundle since then you get most of the dependencies preinstalled.

 

Once you have installed Eclipse, you either find us on Eclipse Marketplace under "JBoss Tools (Indigo)" or use our update site directly.

 

The update site URL to use from Help > Install New Software... is:

 

http://download.jboss.org/jbosstools/updates/development/indigo/

 

Note: SOA tooling such as Drools, jbpm, ESB, Teeid etc. are not included in the JBoss Tools core releases at this time - they will be available separately.

 

OpenShift

The OpenShift platform is moving and improving all the time and this also shows in the OpenShift tooling included in JBoss Tools.

 

The most prominent and waited for feature in this release is we now support starting port forwarding from the IDE instead of using the command line.

And we've done it so it is even better and more powerful than the command line in a couple of situations:

 

  • it works on all platforms out of the box
  • it allows you to choose between using 127.0.0.1 or the remote addresses (especially good for Mac and Windows which needs configuration using 127.0.0.x)
  • it will find free ports if necessary avoiding you to have to stop your local running servers to connect to OpenShift

 

http://docs.jboss.org/tools/whatsnew/openshift/images/port-forwarding.png

 

To start/stop this you use the context menu of your OpenShift application in OpenShift Explorer (previously named OpenShift Console).

 

OpenShift Tools further more now allows you to put any existing application onto OpenShift where it previously only allowed Eclipse WTP projects. These projects can now even be multi-module Maven projects if you want to. This feature should be used with care since it overwrites your OpenShift application and your project content might not be working out of the box on OpenShift - thus use with care and if it fails

remember that OpenShift uses Git for it storage so you can roll it back in case of a failure.

 

And finally OpenShift tools also allows you to create scalable applications in the UI now.

 

http://docs.jboss.org/tools/whatsnew/openshift/images/create-scalable-applications.png

 

Annotation Processing w/Maven

 

Java EE 6 really started pushing more and more annotation processors and Eclipse APT provides a nice incremental integreation with this in Eclipse that makes it fast and non-invasive.

 

Unfortunately in context of Maven this have not always been easy to get configured since there exists multiple ways to invoke the Annotation Processor and in some cases Eclipse APT single-folder-output gives problems

 

With this release of JBoss Tools we are also releasing a configurator for m2e which combines all the best plugins concerning Annotation Processing and made something better and more integrated.

 

Fred Bricon have written a full blog about the feature set and how it works - if you use Annotation processing and maven I recommend you read it.

 

Google Web Toolkit (GWT) w/Maven

 

In our previous releases we have struggled with getting GWT examples to load into Eclipse without users having to tweak and manually run certain actions in specific sequence. The reason for this all came down to that there did not exist a m2e Configurator which takes the maven compiler plugin settings and apply them to Google's Eclipse plugin properly. With JBoss Tools Beta 3 that now exists and it just works.

 

Without this loaded you would have to manually add the GWT module xml to Eclipse and then perform a build based on that which would generate to possibly different output directories than your Maven project is configured to. With JBoss Tools for Maven loaded this a problem of the past.

 

Mobile Browser Simulator Skins

 

BrowserSim now has support for View Source, roatation of the screen by clicking in the corners and two new skins:

 

http://docs.jboss.org/tools/whatsnew/vpe/images/3.3.0.Beta3/browsersim-iphone4.pnghttp://docs.jboss.org/tools/whatsnew/vpe/images/3.3.0.Beta3/browsersim-android.png

 

...and finally as a team enjoying the wonders of Open Source we've added two things that could not exist without the source(s) being open:

 

JBoss Source Lookup

We've included the JBoss Source Lookup container which Snjezana have been working on that will scan a directory of jar's and use their Maven metadata and if necessary their MD5 checksum to locate the source code for any Launch configuration not just your Maven projects and Maven classpath provider.

 

This is useful when you have a server like JBoss, Tomcat, Glassfish or any other server or framework which jar's are mostly available in Maven repositories together with their source artifacts.

 

This allow you to fully debug your runtimes without having to pollute your classpath or Eclipse project configuration with runtime details, machine specific locations and manual download of the sources.

 

http://docs.jboss.org/tools/whatsnew/images/sourcelookuppreferences.png

 

The feature must be explicitly enabled, thus be sure to read Snjezana's wiki article outlining how to use this.

 

Eclipse Source Features

If you are into Eclipse plugin development and want to tinker with the source of JBoss Tools our updatesite now include a matching source feature for majority of our plugins under the Source category on the updatesite. This allows debugging and editing of JBoss Tools plugin without having to checkout our full SVN source tree. Contributions very welcome

 

...and more

 

As usual screenshots and more explanation of what is new is available from the What's New site!

 

Let us know what you think - and do know that we are codefreezing for CR1/GA any day now, so do let us know if you find big issues or simply just love it - both things is what keeps us going

 

Have fun,

Max

Maven Integration for Eclipse JDT Annotation Processor Toolkit a.k.a m2e-apt is now available in its version 1.0. m2e-apt aims at providing automatic Annotation Processing configuration in Eclipse based on your project's pom.xml and its classpath dependencies  (Requires Java >= 1.6).

 

m2e-apt supports both annotation processing set on the maven-compiler-plugin or the maven-processor-plugin (the latter takes precedence over the former).

 

For example, to enable the JPA modelgen annotation processor, you can either set :

 

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
    </configuration> 
    <dependencies> 
        <dependency> 
            <groupId>org.hibernate</groupId> 
            <artifactId>hibernate-jpamodelgen</artifactId> 
            <version>1.2.0.Final</version> 
        </dependency> 
    </dependencies> 
</plugin> 

 

or

 

 

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <compilerArgument>-proc:none</compilerArgument> 
    </configuration> 
</plugin> 
<plugin> 
    <groupId>org.bsc.maven</groupId> 
    <artifactId>maven-processor-plugin</artifactId> 
    <version>2.0.5</version> 
    <executions> 
        <execution> 
            <id>process</id> 
            <goals> 
                <goal>process</goal> 
            </goals> 
            <phase>generate-sources</phase> 
        </execution> 
    </executions> 
    <dependencies> 
        <dependency> 
            <groupId>org.hibernate</groupId> 
            <artifactId>hibernate-jpamodelgen</artifactId> 
            <version>1.2.0.Final</version> 
        </dependency> 
    </dependencies> 
</plugin> 

 

The generated source folders (target/generated-sources/annotation for maven-compiler-plugin; target/generated-sources/apt for maven-processor-plugin) are automatically added to the project classpath.

 

m2e-apt.png

By default, Annotation Processing is managed by Eclipse JDT APT, so a change in your source classes triggers incremental processing automatically. The downside of using JDT APT is, there's no separation between main and test classes (the way maven-processor-plugin handles them).

To mitigate that limitation, you can change the workspace or project preferences to delegate annotation processing to maven, instead of JDT APT. This will result in slower incremental builds (all classes will be processed) but will provide identical results to maven command line builds. Note this only works when using maven-processor-plugin. When annotation processing is driven by maven-compiler-plugin, JDT APT is always used in eclipse.

 

Automatic annotation processing configuration from the maven pom.xml can also be disabled altogether. In this case, your manual settings for Eclipse JDT APT will remain untouched.

 

Go to Window > Preferences > Maven > Annotation processing or right-click on your project > Properties > Maven > Annotation processing to select the Annotation Processing strategy of your choice.

 

m2e-apt-prefs.png

m2e-apt is heavily based on the work from two community members :

  • a patch for m2e by Karl M. Davis, from Knowledge Computing Corp, implementing Eclipse JDT APT configuration based on the maven-compiler-plugin's configuration.
  • com.excilys.ebi.m2e.apt  by Stéphane Landelle, from eBusiness Information, Excilys Group, implementing direct maven-processor-plugin invocation from m2e.

 

m2e-apt is available :

 

Source code is available at github. If you find any bug, please raise a ticket on m2e-apt's issue tracker.

 

Happy hacking,

 

Fred

https://twitter.com/#!/fbricon

This morning I woke up to an email stating that Christos Vasilakis had created an iPhone app to manage JBoss AS 7 servers from your phone, he even posted a video about it.

 

I tried it out immediatly and wanted to see how to use it against servers started by JBoss Tools. Since JBoss AS 7 is secured by default you have to do a few steps to make this work:

 

  1. Add a user to your JBoss Server with $JBOSS_HOME/bin/add-user.sh
  2. Set "Host name" to your local ip instead of localhost
  3. Add -Djboss.bind.address.management=<local ip> to the server launch configuration.

 

Note: These steps are not unique for the iPhone app, it's the exact same you would need to do for any remote management of your JBoss Tools started server.

 

To show how it all works together I recorded a screencast which shows the setup in tools and how to use the iPhone app.

 

 

If the video is not showing up for you then you can watch it directly on JBoss Tools vimeo group.

 

Thanks to Christos for making the app and hope you all enjoy managing your JBoss Tools started AS 7 server from your couch

Beta2

Earlier this week we pushed a bugfix release out called Beta2 for both JBoss Tools 3.3 and JBoss Developer Studio 5.0.

 

If you already have JBoss Tools 3.3.x installed you should get this update as soon as you use Help > Check for updates.

 

For Developer Studio you will need to either redownload or manually add the staging updatesite as described on https://devstudio.jboss.com/updates/5.0/staging/

 

The bugfixes mainly relates to better handling of errors in OpenShift tooling and updates to Forge runtime making the CRUD generation work better.

 

You can see the full change list here

 

Movies

Burr Sutter have been busy and cranked out a whole series of videos showing of JBoss Tools and Developer Studio.

 

The topics cover how to install JBoss Tools and Developer Studio, Java EE 6 + Arquillian , Richfaces 4 Desktop w/Mobile, Forge, Google Web Toolkit, Maven, Hibernate Tools Reverse Engineering and Forge Reverse Engineering.

 

Burr walks you through how to use these various technologies from beginning to end all rooted in JBoss Central - a great way to get started with JBoss Middleware and learn about how to use JBoss Tools to make it even easier.

 

You can see them all on our newly fresh updated Movie page with either Flash or HTML5.

 

If you like the videos please login to vimeo and Like them or even better leave a comment on what you think or what other video content you would like to see.

 

m2e-wtp at Eclipse

I wrote about how we have proposed moving m2e-wtp to Eclipse.org. This should make life easier for Mave and Eclipse users overall and I'm happy to report we have received nothing but encouragements and good feedback on that proposal.

 

We will keep you posted on how things move along with the proposal and hope you will give it a try as soon as we have something posted and built.

 

Thank you for the support and Have fun watching the videos and trying out Beta2!

Over the last 2+ years we have done a lot of work at helping improving Maven Integration for Eclipse (m2e) in areas of performance, features and extensions.

 

One of those extensions, if not the most important one, is maintaining and developing Maven Integration for Web Tools Platform also called m2e-wtp.

 

Today (or rather last night) our proposal for making this an Eclipse.org project got posted.

What is m2e-wtp

m2e-wtp is what helps you get seamless import of your maven projects with all the right dependencies configured, the proper assembly setup and it will even enable features in Eclipse that are relevant based on your maven pom.xml file, in context of the Web Tools Platform features : automatic configuration for Web, EJB, EAR, Connector, Web Fragment and Application Client projects.

 

m2e-wtp also brings some maven exclusive features to your favorite IDE, such as dynamic web resource filtering or war overlays.

 

You can get the current m2e-wtp from Eclipse Marketplace or by installing JBoss Tools.

Why bring m2e-wtp to Eclipse

m2e-wtp have had a “fun” life over the years. After m2e moved to Eclipse, m2e-wtp was in a weird place seeing that Sonatype hosted the issue tracker and the main source repository at github while JBoss eventually took over the development and maintenance, but the core m2e was at Eclipse.

 

This spread between multiple organizations have made it harder than necessary for potential contributors to get involved and it also made it tricky for users to know where and how to get involved and get help.

 

To remedy this, we’ve worked over the last couple of weeks/months to prepare a proposal to move m2e-wtp and this proposal is now what is available on Eclipse.org.

 

What does this mean for JBoss Tools users

It should not have any big impact to start - we plan on making the migration from the original m2e-wtp to m2e-wtp at Eclipse as smooth as possible.

 

We will continue to drive and contribute to m2e-wtp, and JBoss Tools will still provide extensions and integration on top of m2e and m2e-wtp.

 

Some of these extensions don’t make sense elsewhere than in context of JBoss Tools and others will eventually find their way into m2e and m2e-wtp.

How do I support/contribute to this proposal ?

If you are interested in this project and seeing it become a full eclipse project, please comment on it on Eclipse Proposal forum, email me directly at max.andersen@redhat.com or catch me at EclipseCon this week!

 

We would love to hear your thoughts on this, even if it is just a “that is about freaking time” comment

 

Great thanks go to all the people from Sonatype, IBM, Oracle, SAP, VMWare and others involved in making this proposal happen - to know more about them and the proposal, read more here.

 

In conclusion I would like to thank Fred Bricon for his outstanding work on m2e-wtp and I’m looking forward to see where he will take it going forward hosted at eclipse.org.

 

Thank you and have fun!

Been a busy week and weekend preparing and arriving at EclipseCon which this year decided to move from sunny(?) California to rainy(?) Reston in Virginia.

 

EclipseCon is always a busy week for me, and this year is no different - below is a list of the “official” items I’ll be doing:

 

Tycho, still good, bad or ugly ?, Tuesday - a refreshed version of my talk from EclipseCon Europe talking about how many good, bad and ugly things we ’ve see in Tycho in the process of JBoss Tools moving to it from “good old, but crappy, PDE build”

 

Eclipse Product Showcase, Wednesday - I’ve submitted a new product showcase to the reception happening at EclipseCon. We’ll see if I make it in on time

 

Ceylon the language and it’s tools, Thursday - I’ll give an introduction to the Ceylon language and the Eclipse tooling built to support it.

Booth Bunny, most days - I’ll be hanging out in Red Hat’s booth this year together with Dan Allen from JBoss and a bunch of OpenShift guys; showing of the wonders of cloud and middleware tooling.

 

…and one more thing - but that is going to be a seperate blog - watch this space

Rest of Red Hat

 

The above is not all from us, we got a few others showing up at EclipseCon too:

 

Get ready to fight your technical debt, with Tycho, Sonar and Jacoco where Mickael Istria and his co-speaker from Pod Programming, Xavier Seignard will be showing how continous improvement can be made possible with the means of technologies such as Sonar, Tycho and Jacoco.

 

Persona Non Grata - Don’t forget the users when doing your designs! is where Brian Fitzpatrick will talk about how to use user personas as guide lines for development.

 

Integration and Functional Testing from the IDE: Where does it hurt ? a BOF hosted by Dan Allen on how Arquillian can be used for integration and functional testing and what challenges still lies ahead to make that work smooth from wtihin Eclipse.

 

Hands on with C/C++ IDE which is a tutorial hosted by Andre Overholt which guides you through how to get to use Eclipse developing C/C++ applications.

 

Jumpstart Java EE6 Development in the Cloud with JBoss Tools where Mark Atwood is bound to show off JBoss Tools and how it works with the JEE tooling and OpenShift PAAS from Red Hat.

 

Developing Cloud Apps with Orion, Django and MongoDB - in 30 Minutes or Less is Mark now talking about how to use Eclipse Orion with OpenShift to do Django and MongoDB development.

 

Mobilize Your MongoDB! Developing iPhone and Android Apps for the Cloud with Eclipse shows Grant Shipley going all mobile in showing how to do mobile apps development with OpenShift and Eclipse.

 

…and then there is all the BOF’s and bar’s where all the real work is done - looking forward to meet old and new friends.

 

See you there and Have fun!

In celebration that @dhinojosa became our chiliad follower on @jbosstools we are releasing Beta1 of both JBoss Tools and JBoss Developer Studio today!

jbosstolsdevstudio.png

Beta1 (Chiliad)

Developer Studio: [Download] | Tools: [Download] [Update Site] | [What's New] [Forums] [JIRA] [Twitter]

 

JBoss Tools is a set of plugins for Eclipse that complements, enhances and goes beyond the support that exist for JBoss and related technologies in the default Eclipse distribution.

 

JBoss Developer Studio is a fully bundled Eclipse distribution which not only includes majority of JBoss Tools but also all its needed dependencies and 3rd party plugins allowing for an easy one-click installation and no-fuzz installation.

 

If you are into doing your own bleeding edge eclipse plugin assembly, JBoss tools is for you, if you are more into having something that "Just Works" then JBoss Developer Studio is the way to go.

 

Installation

 

JBoss Developer Studio comes with everything pre-bundled in its installer. Simply download it and run it like this:

 

java -jar jbdevstudio-<installername>.jar

 

Note, if you are on Mac OSX 64-bit we recommend you start it with -d32 to enable 32-bit to allow you to get the Visual Page editor and use a lot less memory.

 

java -d32 -jar jbdevstudio-<installername>.jar

 

Similar if you are on Windows 64-bit then use a 32-bit JDK to get 32-bit version running.

 

JBoss Tools requires a bit more:

 

This release requires at least Eclipse 3.7.1 but we recommend using the Eclipse 3.7.2 JEE Bundle since then you get most of the dependencies preinstalled.

 

Once you have installed Eclipse, you either find us on Eclipse Marketplace under "JBoss Tools (Indigo)" or use our update site directly.

 

The update site URL to use from Help > Install New Software... is:

 

http://download.jboss.org/jbosstools/updates/development/indigo/

 

Note: SOA tooling such as Drools, jbpm, ESB, Teeid etc. are not included in this release - they will be available separately.

 

Below is my favorite features this time around from our long list of fixes and feature improvements for this Beta.

Control JBoss Hot-redeployment

 

JBoss server adapter normally lets the JBoss Server or Eclipse JDT figure out when it is time to load newly deployed content or update class files via the debugger, but in some cases it is nice being able to say you would like a restart of your application when certain file changes.

 

We do it automatically for updates to jar files, but you might want it to be more agressive and even do it on individual class file changes or when you update .jsp's or similar files.

 

JBIDE-10464.png

If you enable the "Customize application reload behavior on changes to project resources" you now can enter a regular expression to match which resources it should trigger a reload of the module on.

 

Here are some examples:

 

ExpressionWhen it will reload
\.jar$|\.jsp$on a jar or jsp file change
.*on any resource changes (unnecessary!
\.jar$|\.class$on a jar or class file change
.jar$|.*\.model\..*.class$on a jar change or on when a .class file inside a package containing ".model." in its name (useful for only reloading on JPA annotation changes)

 

Cheatsheet for regular expression syntax used above: \. matches a . (dot), $ means end of line, | means 'or' allowing to group content.

 

This of course means more often redeploys but that can very often be just the thing you need for your specific workflow.

 

Skinned and Intelligent BrowserSim

The mobile browser simulator now looks like a mobile browser and will now try intelligently to detect which URL to open with based on what is the current selection/editor in Eclipse.

 

http://docs.jboss.org/tools/whatsnew/vpe/images/3.3.0.Beta1/10553-browsersim-default-page.png

Redesigned OpenShift UI

To handle more complex scenarios such as supporting deploying openshift applications already associated with another git repo and to make OpenShift easier to get started with we have redesigned the OpenShift wizards and views.

 

http://docs.jboss.org/tools/whatsnew/openshift/images/wizard-new-application.png

OpenShift Express Console

 

We've added view called OpenShift Express Console which gives you a nice overview of your OpenShift account(s), your applications/cartridges and provides easy access to common operations.

 

http://docs.jboss.org/tools/whatsnew/images/importapp_via_console.png

OpenShift Source and binary deployment

It is now possible to drag existing deployable resources such as WTP projects and resources marked as deployable to the OpenShift server and if the resource is part of the related github project it will just be associated with the server, but if the resource is not part of the OpenShift project then it will be placed inside the /deployments folder of the project as a binary.

 

Once you publish to OpenShift the binary deployments will be deployed together with your source project which will be built by OpenShift.

 

Updated JBoss Central content

JBoss Central now refreshed all the main wizards for JavaEE, Richfaces, html5.

 

Richfaces shows up recent Richfaces 4 release and HTML 5 is showing of the work done in the Aerogear project regarding mobile application development.

 

We are also now featuring GWT Web project which has Errai in it showing of their event bus to communicate between multiple browsers.

http://docs.jboss.org/tools/whatsnew/images/jboss-central-create-projects2.png

Note, that Google Eclipse plugins are not installed by default - it will be offered when you click the GWT web project.

 

EAP 6 Enterprise Maven Repository

All of the examples above works with the upcoming EAP 6 release which includes a Enterprise Maven repository.

To enable this target an EAP 6 server adapter or set the "enterprise" flag in the wizard to true.

 

From this the project will generate projects that uses the proper enterprise supported binaries over the community binaries.

Faster Import

We found and fixed a memory and CPU issue that caused import of bigger projects to be slow and in some cases even stall.

 

With this issue fixed projects import much faster even for our small test projects it wins 4 seconds and for larger projects it should be even bigger gains.

 

As always let us know if you see slowness that seems unwarranted and we will love to help trace it down and fix the problems.

 

Seam 2.3

 

Seam tooling now accepts and work with Seam 2.3. Seam 2.3 is still in development but it will eventually allow deploying Seam 2 applications on JBoss 7 and Enterprise Application Platform 6.

 

Forge

The Forge tooling now bundles Forge 1.0.0.Final and adds a good set of usability features.

 

Link with editor makes any file opened in the current editor be picked up by Forge - meaning you don't have to manually type the resource location into Forge. Forge will already be there.

http://docs.jboss.org/tools/whatsnew/forge/images/3.3.0.Beta1/link_with_editor.png

"cd" and "pick-up" support, is kind of the opposite, here things you do in Forge gets Eclipse to open/select the used resources.

 

http://docs.jboss.org/tools/whatsnew/forge/images/3.3.0.Beta1/cd.png

Maven + JPA

 

Maven now detects if your project is using JPA and enables JPA/Dali/Hibernate tooling support on your project.

 

JAX-RS + Webservice Tester

The JAX-RS REST Web Services node in Project Explorer now supports "Run As..."-style launching of the Webservice tester.

 

Meaning you can right click on a URL path under JAX-RS and run as on your server and it will if, necessary deploy the application, start the server and then open the web services tester

with the selected URL and give you easy acces to test and explore the returned output.

 

JAX-RS-WS-Tester_Run_As.jpg

 

..and more

The above are just a fraction of the 750+ issues we have fixed this time around - you can see more highlights and screenshots here, but I encourage you to try out this Beta of JBoss Tools or Developer Studio instead of just taking my word for it  - and let us know in the comments or forum what you think about it!

 

Have fun,

Max

This is the last of a series of blog posts covering three features I have had a personal interest in making it into AS 7.1 and the upcoming JBoss Enterprise Application Platform (EAP) 6.

 

Todays topic is about Quickstarts.

Quickstart Frenzy

 

The team doing AS Quickstarts have worked with the tools team on making sure all of the quickstarts have been developed, tested and verified to work nice and clean out of the box for developers - including making them equally Just Work no matter if you are using command line or when using them with an IDE such as JBoss Tools and Developer Studio.

 

This was even true with AS 7.0 and if you missed our recent AeroGear launch you should go look since this Mobile/HTML5 driven project used the tools to show of AeroGear’s magic and one of the key drivers on making this so nice and clean was with the help of the Maven based quickstarts and the power of AS 7, OpenShift and well - kick ass tools if you ask me

 

You will be seeing more of these things happening going forward when other projects gets upto speed with AS 7 and start to have a full experience on AS 7 together with Quickstarts that works well with tools.

 

Now back to the AS 7.1 quickstarts. The following is a listing of the curent quickstarts available for download at jboss.org

 

  • bean-validation - Bean Validation, JPA
  • bmt - EJB, Programmatically control transactions
  • cdi-injection - CDI injections & qualifiers + Servlet
  • cmt - EJB, how to use container managed transactions
  • ejb-in-ear - EJB + JSF, JAR and WAR deployed as EAR
  • ejb-in-war - EJB + JSF deployed as a war
  • ejb-remote - shows how to access EJBs remotely (EJB + JNDI)
  • forge-from-scratch - Forge
  • greeter - CDI + JSF + JPA + EJB + JTA
  • h2-console - H2 Database console
  • helloworld -Very basic CDI + Servlet
  • helloworld-gwt - GWT
  • helloworld-html5 - Very basic HTML5
  • helloworld-jms - JMS
  • helloworld-jsf - Very basic CDI + JSF
  • helloworld-mdb - Very basic JMS and MDBs
  • helloworld-osgi - OSGi
  • helloworld-rs - CDI + JAX-RS
  • helloworld-singleton - Singleton Session Bean
  • hibernate3 - Hibernate 3
  • hibernate4 - Hibernate 4
  • jts - Using JTS to coordinate distributed transactions
  • kitchensink - CDI + JSF + JPA + EJB + JPA + JAX-RS + BV
  • kitchensink-ear - kitchensink as an EAR archive
  • kitchensink-html5-mobile - kitchensink using HTML5, suitable for mobile and tablet computers
  • kitchensink-jsp - kitchensink converted to use JSP
  • log4j - JBoss Modules, Class loading, logging
  • numberguess - CDI + JSF
  • payment-cdi-event - CDI
  • servlet-async - CDI + Asynchronous Servlet + Asynchronous EJB
  • servlet-filterlistener - Servlet Filter and Listener
  • wsat-simple - Simple WS-AT JAX-WS Web service
  • wsba-coordinator-completion-simple - Simple WS-BA JAX-WS Web service with coordinator driven completion
  • wsba-participant-completion-simple - Simple WS-BA JAX-WS Web service with participant driven completion

 

As you might notice the number of quickstarts have grown from 5 in AS 7.0 to 33 in AS 7.1.

 

These quickstarts cover a broad range of technologies all setup to run on AS 7.1 and all follows more or less the same structure:

 

  • contains a README.html/.md with explanation of what the example does
  • a pom.xml following good best practices when building projects that uses JEE & JBoss API
  • is importable into JBoss Tools and Developer Studio

 

Mind you that because of the last two points (pom.xml + importable into tools) you should see that it is just as usable in other IDE’s that support import of Maven projects such as Netbeans, Intellij and others.

 

That is the power of Maven - no matter how much we all love to complain about Maven’s shortcomings as a build tool, the fact it is prevalant, has all major dependencies available and works from both command line and IDE’s is a huge win.

 

Migrating from Community and Product

JBoss AS 7 and EAP 6 is the first release of JBoss which are built primarily with Maven. This change also makes it possible to finally easily use proper dependency managemment when building applications using JBoss AS 7 and EAP.

 

We’ve even gone so far to make sure that it is easier to move from AS 7 to EAP 6 - for plain applications it should just be a matter to adjust the Bill-Of-Materials (BOM) POM used in your <dependencyManagement> section in your pom.xml.

 

To do this presented a challenge since EAP 6 as the productized rebuilt version of AS 7 would get an overlap of Maven Group/Artifact/Version-identifiers (GAV) if not done properly. If you’ve used build systems with dependency management you know overlapping Maven GAV's presents a problem of possibly ambigious dependencies when doing builds. Especially with Maven which caches and stores all its artifacts in one location, namely ~/.m2/repository. Imagine what happens if you first built against Maven central/JBoss.org repositories and then later used an EAP Maven repository where GAV were the same but the actual artifacts behind them were not. Such setup will be catastrophic for any software release, no matter if mission critical or just for fun.

 

Therefore we have taken this into account and JBoss EAP build team ensures that no GAV “overlapping” occurs by adding the -redhat-<number> qualifier to anything that is part of an EAP based product such as JBoss EAP 6.

 

This ensures continuity for developers using AS 7 and wanting to test and go to production against EAP 6 and doing this change is illustrated well when looking at the difference between quickstarts in JBoss AS 7 and those bundled with EAP 6.

 

Here is a snippet from the dependency management part of AS 7.1 quickstart:

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>3.0.0.Beta1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

And here is the same from an EAP 6 quickstart:

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>3.0.0.Beta1-redhat-1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Notice, the difference ? The only difference is ‘-redhat–1’ in the version tag.

 

This small change ensures that your build now will use EAP 6 supported productized binaries instead of the community bits as long as you do not list the explicit version of your specific dependencies and let the BOM POM be the "manager" of the versions.

 

It is a subtle difference with great potential.

 

This means that users applications can be built targeting community releases early on and when relevant start targeting productized versions with an easy change of the BOM.

 

And as a sideeffect it also becomes easy for you to try out experimental new features in future community releases of JBoss AS 7, 8, etc. by just picking the right version in the dependency management section.

 

Note: as productized versions stabilizes, gets security and bug fixes some differences will occur which might require some other changes but with the conventions of the -redhat qualifier and usage of so called Maven Bill-Of-Material(BOM)-pom’s it becomes easy migrate and there is a central place and format to outline the build differences that applies to you as a user of JBoss AS and EAP.

JBoss Tools and Quickstarts

There are two easy ways to get started with quickstarts from within JBoss Tools.

 

The first one is simply to open JBoss Central and pick one of the Quickstarts listed in the project example section:

jbosscentralquickstarts.png

 

When starting such example you get a short description plus option to download any missing plugins or server runtimes (such as AS 7.1).

Note: at time of writing the current M5 release of JBoss Tools targets AS 7.0, AS 7.1 will be targeted in upcoming JBoss Tools release.

 

projectexamplefirstpage.png

 

This makes it easy to get started - the only thing you need is to download JBoss Tools or Developer Studio and it will help you get the remaining dependencies.

 

Alternatively if you prefer to download everything manually and have access to all quickstarts in on go then simply Download the quickstarts and use the ‘Existing Maven Projects’ Import wizard.

 

mavenimport.png

 

In this wizard you can import a subset or all quickstarts as you see fit. After that JBoss Tools will with help of m2eclipse and m2e-wtp import the projects and you can start trying out JBoss AS 7 or EAP 6.

 

And as a final touch if you target AS 7 the examples will be setup to use community binaries but if you target EAP 6 we will enable the enterprise flag for the archetypes which will make the created project target EAP productized binaries instead via the usage of the -redhat qualifiers instead.

What if I don’t want to use Maven ?

 

For easy distribution of quickstarts and making sure it works in the many different environments users work in it is the best option available today.

 

We do though understand and realize not everyone likes to use Maven for their projects and for this we’ve added a feature in JBoss Tools which allows you to convert a Maven Eclipse project to a “plain” Eclipse project.

 

The feature is available via right click on any classpath library such as “Maven Dependencies” and is called “Materialize Library”

materializelibrarymenu.png

 

This feature materializes (i.e. copy) the Maven classpath libraries from being located in ~/.m2/repository to a directory into your project + disabling the Maven Nature and thus you end up with a “Maven free” project.

 

materializelibrarydialog.png

 

This means you can use the Maven based quickstarts, import it, apply “Materialize Library” and end up with a project that has no dependency to Maven builds and you can create a build in your favorite alternative build tool.

 

Everybody wins.

 

The End

This brings to the end of my blog series concerning the main three features in AS 7 I get excited about: Deployable datasources, Developer Friendly Security and finally the Quickstart Frenzy.

 

Of course there are plenty of other features in AS 7.0 and 7.1 to get excited about, things like the ~1–4 second startup time, the scritable management API, domain multi node setup, unfied configuration files and more.

 

But the ones that excites me this time around are the ones that I found to be most helpful for developers and makes tooling integration easier/better.

 

I’ve told you what excites me in AS 7.1, now I would love to hear what feature of AS 7.1 excites you ?

I’m posting about three features which I have had a personal interest in making it into AS 7.1 and the upcoming JBoss Enterprise Application Platform (EAP) 6.

 

Today the topic is how AS 7 is secured but still stays developer friendly by default.

Developer Friendly Security

Security is one of those things you know is important but also knows it risk ending up making your and your user life miserable to get started with your product.

 

One of the big challenges AS have had over the years is that while it tried to be developer friendly out of the box by not being secured by default, developers forgot or simply did not know how to actually ensure the server was secured for proper production deployments.

 

This previous default out of the box behavior have led to several security issues for AS. Which if you are using an older AS version in production should go and verify you are not unknowingly exposed to.

 

All of these security defaults was mostly fixed by using EAP which is secured by default, but then as sideeffect needed additional configuration to be usable for development.

 

In AS 7.1 things are different. Here the server is now by default not exposed on external interfaces and there are simply no users registered that can login remotely.

 

But does this mean you now have to go and add a user before being able to use the server ? Do you have to configure the examples to use this new user and type in a password for doing deployments ?

No - you don’t have to! AS 7.1 has this great trick that when you connect to the management services the server will send a “secret key” challenge to the client which it can only answer if it has physical direct access to the filesystem with the same permissions as the user that is running the server.

 

default_as7_security.png

This means that if you as a developer run AS 7.1 and want to do some local management operations on it you do not have to setup any users nor configure your examples or tools to use the server - it will just work out of the box in the development scenario and if you go and deploy the server into production “as-is” it will not be exposing any internals unless. Big win for security and for developer usability!

Setting up a user

There are though one case where you have to setup an user as a developer. To access the web-based admin console (http://localhost:8080/console) you are using a browser and this goes on over HTTP within a browser which cannot (safely and portable) get access to the local secret key AS 7.1 generates.

 

Luckily adding a user is easy todo and if you try and access the web console AS 7 will even tell you how to do it, but let me repeat it here for completeness.

 

To add a auser you go into your AS 7 installation and run bin/add-user.sh. For the default case you can accept the default choices by pressing enter twice and just enter username/password and verify the username is correct.

 

It should look something like this:

$ cd jboss-as-7.1.0.Final
$ bin/add-user.sh

What type of user do you wish to add? 
a) Management User (mgmt-users.properties) 
b) Application User (application-users.properties)
(a): 

Enter the details of the new user to add.
Realm (ManagementRealm) : 

Enter the details of the new user to add.
Realm (ManagementRealm) : 
Username : max
Password : ******
Re-enter Password : ***** 
About to add user 'max' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'max' to file '/Users/max/runtimes/jboss-as-7.1.0.Final/standalone/configuration/mgmt-users.properties'
Added user 'max' to file '/Users/max/runtimes/jboss-as-7.1.0.Final/domain/configuration/mgmt-users.properties'

The two lines reveals what this add-user.sh actually does: update the mgmt-users.properties files found in the standalone and domain mode configuration.

If you wanted to you could update these property files manually since it is just pairs of username and a hashed password - but using bin/add-user.sh is by far the simplest approach.

Now with this user added the remote running tools can connect to AS 7 as long as they provide the username and password.

 

JBoss Tools and Security

By default JBoss Tools server adapter will use the local secret key generated by AS 7.1, but in case you are running remotely you will need to tell JBoss Tools which username and password to use.

This is done by double-clicking the server in the server view which will open the server editor. In here there is a “Management Login Credentials” section.

managementlogincredentials.png

Now if AS 7.1 requires a username/password JBoss Tools will be able to login to the server remotely to perform management operations.

 

Tomorrow

 

Tomorrow the topic is on how AS 7.1 comes with a large set of Quickstarts which runs out-of-the-box from command line, JBoss Tools or your second-favorite IDE.