JBoss and Oracle XE

JBoss and Oracle XE (Express Edition) make for an interesting, and cost effective, J2EE stack for non-mission critical, small scale, software applications. Getting JBoss and Oracle XE to work together is really straight forward.

Resolve port conflicts
By default, JBoss and Oracle XE both use port 8080. So, when using JBoss and Oracle XE on the same machine, something has got to give. As one is most likely to be using and interacting with the container more, it might as well be the database that has to adapt. To change the default Oracle XE HTTP Listening port (8080) to 9090 do the following:

  1. Start sqlplus (Run SQL Command Line icon in windows)
  2. Enter ‘connect / sysdba’
  3. Enter ‘exec dbms_xdb.sethttpport(9090);’
  4. Stop and then Start the Oracle XE database

Note that this does not change the default TNS Listening port 1521, although the short cut (/app/oracle/product/10.2.0/server/Database_homepage.url) to launch the Database home page will need to be updated.

Setup DataSource
The Oracle XE installation comes with a sample HR database. A DataSource in JBoss can be defined for it, but first the Oracle JDBC library needs to be in the JBoss server classpath. Copy ojdbc14.jar from /app/oracle/product/10.2.0/server/jdbc/lib to /server/default/lib. Now the DataSource can be defined. DataSources are ‘deployed’ in JBoss. Their configuration information is in an XML file with a name that ends in ‘-ds’.

In /server/default/deploy create a file called oraclexe-ds.xml with the following content:









OracleXEDS

jdbc:oracle:thin:@127.0.0.1:1521:XE

oracle.jdbc.driver.OracleDriver
hr
hr

5
100


org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter


Remember that in Unlocking the Sample User Account step in Oracle XE Getting Started Guide, the HR account password is set to ‘hr’. The console for JBoss should display something like:


[ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=OracleXEDS' to JNDI name 'java:OracleXEDS'

Testing DataSource witha JDBC client
A simple JSP, in an expanded WebApp, can be used to test the DataSource. In /server/default/deploy create a directory called ‘jdbcclient.war’. In that directory create a file called ‘client.jsp’ and add the following content:

<%@page contentType="text/html"
import="java.util.*,javax.naming.*,javax.sql.DataSource,java.sql.*"
%>
<%

DataSource ds = null;
Connection con = null;
PreparedStatement pr = null;
InitialContext ic;
try {
ic = new InitialContext();
ds = (DataSource)ic.lookup( "java:/OracleXEDS" );
con = ds.getConnection();
pr = con.prepareStatement("SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES");
ResultSet rs = pr.executeQuery();
while (rs.next()) {
out.println("
" +rs.getString("EMPLOYEE_ID") + " | " +rs.getString("LAST_NAME"));
}
rs.close();
pr.close();
}catch(Exception e){
out.println("Exception thrown " +e);
}finally{
if(con != null){
con.close();
}
}
%>

Open your browser and point it to http://localhost:8080/jdbcclient/client.jsp. A list of employee numbers and last names get displayed. This ‘jdbcclient’ approach is used in the JBoss DataSource tutorials.

Changing post-installation configuration for Oracle Access Manager Identity Server

Oracle Access Manager is an enterprise scale solution for both centralized identity management and access control. It integrates out-of-the-box with all leading directory servers, application servers, web servers, and enterprise applications. By protecting resources at the point of access and delegating authentication and authorization decisions to a central authority, Access Manager helps secure web, J2EE, and enterprise applications. It also provides self service administration functionality, complying with the authentication and authorization policies that are defined centrally. Not only that, Access Manager has API’s for customisation and integration, making it possible address a number of functional and non-functional requirements for security solutions in different industries. However, it’s most topical feature is it’s Single Sign-on capabilities. Making it a very attractive solution for enterprise deployment of SOA software solutions.

As you would expect with software that does so much, there is a lot involved in setting up Oracle Access Manager. Although it is not very complicated, there are a significant number of steps which have to be done right. Thankfully, these steps are set out in an Oracle By Example series which provides step-by-step instructions on how to perform a variety of tasks by integrating Oracle Virtual Directory with Oracle Access Manager.

When setting up Identity Server and Web Pass there is a post-installation configuration sequence which is really straight forward. However, if you make a mistake, which is not addressed before the setup completes, how do you change these settings? Here’s how…

The post-installation configuration process involves a number of screens. The status of the configuration is maintained by the Identity Server in identity/oblix/config/setup.xml. To trick the Identity Server to take you through the post-installation configuration process again when you click on the ‘Identity System Console’, you have to edit this file.

Simply comment out the ‘status’ NameValPair element. Save the file and restart both the Identity Server and HTTP Server. Then, go back over the Postinstallation Configuration for Oracle Access Manager Identity Server as normal. Voilà!

Practices of an Agile Developer



Title: Practices of an Agile Developer

Authors: Venkat Subramaniam & Andy Hunt
Publisher: Pragmatic Bookshelf

If you are looking for a step by step guide on running your software development projects, THIS IS NOT THE BOOK! This book, published in 2006 but still very valid today, collects the personal habits, ideas, and approaches of successful agile software developers and presents them in a series of short, easy-to-digest tips. There are 45 tips in all, covering a broad range of subjects such as the development process , incremental learning, etc. The format taken for each tip is quite interesting. As well as the indepth explanation and case study references, each tip has:

  • A taunt from the devil. That voice in your head that seems perfectly reasonable, but is infact taking you to a world of pain in the future.
  • Advice from your guardian angel. The counter-argument to the devil’s shenanigans.
  • A ‘What it feels like’ section. Nice short description of what happens when the tip is applied.
  • A ‘Keeping your balance’ section. This really reflects the Agile Development philosophy of adapting to the circumstances.

The authors have taken this approach out of the firm belief that the most important part of software development takes place in the developers head, so there is little focus on tools. However, they do provide a little sidebar called the Agile Toolkit which outlines the uses for:

  • Wiki
  • Version Control
  • Unit Testing
  • Build Automation & Continuous Integration

These tools support Agile Development, which the book describes as follows:
Agile Development uses feedback to make constant adjustments in a highly collaborative environment. Emphasis is mine, but I think this is a very good definition.

To summarise, Practices of an Agile Developer provides pragmatic ways of approaching the development process and your personal coding techniques as well as your own attitudes, issues with working on a team, and how to best manage your learning.

Oracle XE default port and windows firewall

SOA Suite 11g Technology Preview 3 needs an Oracle database and Oracle XE (the free database edition) is ideal as the installation is so straight forward. By default the installation sets the database listener port to 1521 and the http server port to 8080. If these ports are already in use on your machine, the installer will prompt you to specify an available port number.

Figure 1. Choosing another port number. This dialog box only gets displayed during installation if port is in use or blocked by firewall.

On a Windows XP installation the Oracle XE installer reports that a port is in use if that port number is being blocked by the firewall. Disabling the firewall is generally not a good idea as, along with anti-virus software, it provides a crucial defence for your machine, network and business.

The windows firewall settings can be found in the Control Panel. Just add the default port numbers to the firewall exception list. Once that is done, one can switch back to the ‘Choose Port’ dialog, put the default value in and continue with the Oracle XE installation.

Figure 2. Keep the firewall ‘On’ and go to the Exceptions list.
Figure 3. Adding the Oracle XE port 1521 to the Exceptions list.

Securing SOA

A recent white paper by Marc Chanliau, Oracle Fusion Middleware Product Management, on Web Services Security is now available on OTN. The What is required to secure SOA white paper gives a clear overview of the security requirements for services and how these requirements, with corresponding ‘standards’, have evolved.

In his paper, Marc discusses transport layer as well as application layer security for services. He also outlines the role of the many security related standards, technologies and tools out there. The approach taken shows how and where they compliment or overlap. Such topics include:

  • Confidentiality, Integrity, Authenticity: XML Encryption, XML Signature.
  • Message-Level Security: WS-Security.
  • Secure Message Delivery: WS-Addressing, WS-ReliableMessaging.
  • Metadata: WS-Policy, WS-SecurityPolicy.
  • Trust Management: SAML, WS-Trust, WS-SecureConversation, WSFederation.
  • Public Key Infrastructure: PKCS, PKIX, XKMS

Every web services developer should have an understanding of these concepts. I highly recommend this document as a basic primer in web services security.