Tarin Gamberini

A software engineer and a passionate java programmer

RhinoScriptEngineFactory cannot be cast to ScriptEngineFactory

Recently I was asked to migrate a legacy web application from an old environment:

  • JBoss EAP 4.0.2
  • JDK 1.5 (Java SE Development Kit 5.0u22)

to a less old target environment:

  • JBoss EAP 5.0.1
  • JDK 1.6 (Java SE Development Kit 6u45)

Tests passed successfully and we put the migrated web application in production.

All was going well when suddenly the production log began to grow.

Adoption of Free Software PDF readers in Italian Regional Public Administrations

The campaign Free Software PDF Readers, launched by Free Software Foundation Europe (FSFE) in 2009, has achieved notable results at institutional levels:

  • In Germany, national parties gave statements in favour of free PDF readers and the German Government itself has recommended the usage of our text snippet in their migration guide (de). FSFE’s coordinator for Germany, Max Mehl, covers it in more detail on his blog.
  • In the EU: the European Parliament directly asked the European Commission what were the reasons for advertising a specific software and which steps were taken to solve this problem.

This campaign was based on three core principles we support at FSFE:

  • Neutrality: Public institutions should not engage in advertising
  • Freedom: Public institutions should not ask citizens to use non-Free Software
  • Open Standards: The versions of the PDF format which are Open Standards can be implemented by all PDF readers

Today, 6 years later since the campaign launch, I would check which was the state of the adoption of Free Software PDF readers by Italian Regional Public Administration.

Address already in use: bind localhost 127.0.0.1:9990

Few days ago I was asked to configure a JBoss EAP 6.4.3.GA environment on my computer because of a new project I should work on in the next months.

The first annoying problem I had to face was about the following error log message:

15:50:12,375 INFO  [org.jboss.modules] (main) JBoss Modules version 1.3.7.Final-redhat-1
15:50:12,551 INFO  [org.jboss.msc] (main) JBoss MSC version 1.1.5.Final-redhat-1
15:50:12,600 INFO  [org.jboss.as] (MSC service thread 1-1) JBAS015899: JBoss EAP 6.4.3.GA (AS 7.5.3.Final-redhat-SNAPSHOT) starting
...
15:50:17,618 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.serverManagement.controller.management.http: org.jboss.msc.service.StartException in service jboss.serverManagement.controller.management.http: Address already in use: bind localhost/127.0.0.1:9990
  at org.jboss.as.server.mgmt.HttpManagementService.start(HttpManagementService.java:227) [jboss-as-server-7.5.3.Final-redhat-SNAPSHOT.jar:7.5.3.Final-redhat-SNAPSHOT]
  at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
  at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_25]
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_25]
  at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_25]
Caused by: java.net.BindException: Address already in use: bind
  at sun.nio.ch.Net.bind0(Native Method) [rt.jar:1.8.0_25]
  at sun.nio.ch.Net.bind(Net.java:436) [rt.jar:1.8.0_25]
  at sun.nio.ch.Net.bind(Net.java:428) [rt.jar:1.8.0_25]
  at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214) [rt.jar:1.8.0_25]
  at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) [rt.jar:1.8.0_25]
  at org.jboss.sun.net.httpserver.ServerImpl.<init>(ServerImpl.java:144)
  at org.jboss.sun.net.httpserver.HttpServerImpl.<init>(HttpServerImpl.java:54)
  at org.jboss.sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(DefaultHttpServerProvider.java:38)
  at org.jboss.com.sun.net.httpserver.HttpServer.create(HttpServer.java:147)
  at org.jboss.as.domain.http.server.ManagementHttpServer.create(ManagementHttpServer.java:168)
  at org.jboss.as.server.mgmt.HttpManagementService.start(HttpManagementService.java:193) [jboss-as-server-7.5.3.Final-redhat-SNAPSHOT.jar:7.5.3.Final-redhat-SNAPSHOT]
  ... 5 more

The log said Address already in use: bind localhost/127.0.0.1:9990 so the question was: which service is running on port 9990 on this microsoft windows computer?

The Best of Git working with Subversion

Usually to interact between a remote Subversion repository and a local Git repository you have to be on the local master branch and run:

  • git svn dcommit instead of git push
  • git svn rebase instead of git pull --rebase

There is no equivalent to git pull because Subversion and Git handle merges differently, so to prevent Subversion committers saw merge commits a rebase is mandatory.

You can get the best of Git working with Subversion interacting between the Git local repository and the local working directory.

So you can:

  • preparing to commit only the part of a file you want, by using git add --patch
  • rewriting commit history, by using git rebase --interactive and the various pick, reword, edit, squash, fixup
  • extremely quickly create new branches
  • including in the current branch a single commit made on another branch, by using git cherry-pick
  • using git bisect to find which commit caused a particular bug
  • temporarily parking last changes to face an emergency, by using git stash save my_current_issue

and do all the other stuff you can do locally that make you love Git.

I want to stress about using local branches to your benefit only and not to collaborate with other committers. This means you have to merge locally your branches into master before interacting with remote subversion repository. In this way no one could see your merge commits.