How to run ASP on the Mac

I have an old web app that’s using Active Server Pages, and I want to run it on my (Intel) Mac. This is basically not a big deal, because you can simply use Microsoft IIS under Parallels.

But I wanted to use IIS only for ASP files, and let Apache handle the rest. And here’s how to make sure IIS only handles what it’s supposed to:

1. Make a share of your Webserver Root directory in Parallels.
2. On the PC, in the IIS Control Panel, click on the default Website, click on Properties, then choose Home Directory, select that the content should come from A Share located on another computer and enter .PSFyoursharename as the network directory.
3. Make sure you allow ASP under Web Service Extensions
4. On the Mac, uncomment the following lines in /private -> etc -> httpd -> httpd.conf (remove the #’s):

      LoadModule rewrite_module
      LoadModule proxy_module
      AddModule mod_rewrite.c
      AddModule mod_proxy.c

Continue reading “How to run ASP on the Mac”

Read Text File (.txt) Using JSP / Java

BufferedReader input = new BufferedReader(new FileReader("text2read.txt"));
String line = "";
while ((line = input.readLine()) != null) {

Additional example

Valid styles for converting datetime to string

I wrote this little table and procedure to help me remember what style 104 did, or how to get HH:MM AM/PM out of a DATETIME column. Basically, it populates a table with the valid style numbers, then loops through those, and produces the result (and the syntax for producing that result) for each style, given the current date and time.

It uses also a cursor. This is designed to be a helper function, not something you would use as part of a production environment, so I don’t think the performance implications should be a big concern.

Continue reading “Valid styles for converting datetime to string”

Use CAST (or CONVERT) to handle Null Date values in Microsoft SQL Server

In an SQL Server View, a problem is that the DateTime field has many Null values which is causing a problem with the parsing of the data in MSAccess.

How to I use CAST (or CONVERT) to handle Null Date values in my SQL Server view?

There is a way to use CAST or CONVERT similar to the nz type function in MSAccess to handle null date values but I can’t remember the syntax.

What is happening now is that I get a data mismatch in my MSAccess function when it hits a Null Date value. Can I somehow use the ISNULL or ISDate function? I believe I need to somehow return “” instead of Null.

Continue reading “Use CAST (or CONVERT) to handle Null Date values in Microsoft SQL Server”

MS SQL Server / SELECT clause with a CASE expression

In SQL Server, if you have a column which has NULLs and instead of nulls, if you want to display ‘Nothing’, what would you do?

The following query

SELECT CASE Dept_Name WHEN NULL THEN 'Nothing' ELSE Dept_Name END Dept_Name
FROM Inventory

would still display the nulls and not ‘Nothing’.


Continue reading “MS SQL Server / SELECT clause with a CASE expression”


The SQL SELECT INTO statement can be used to create backup copies of tables.


The SELECT INTO statement selects data from one table, creates a new table with the exact structure and size and inserts automatically the selected data into the new table.


We can select all columns into the new table:

INTO new_table_name [IN externaldatabase]
FROM old_tablename

Or we can select only the columns we want into the new table:

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

Continue reading “SQL SELECT INTO Statement”

JBoss in Action

This book is divided into four parts, containing 15 chapters and two appendices.

Chapter 1: The JBoss Application Server

If you are using JBoss than you can simply skip Chapter 1. This chapter gets you up and running with JBoss by describing the directories and files that are part of JBoss AS, how to start and stop the server, and finally show how to deploy and undeploy a simple web application.

Chapter 2(Managing the JBoss Application Server) starts with a description of how JBoss application server is architected;the JBoss Microcontainer and JMX. Next, you will learn how each of these components are configured using its own configuration file, and how you can change these as well. Next, we get a closer look at a few of the management tools provided by JBoss like the JMX Console and twiddle. And finally, a look at some MBeans that provide helpful information,the MBeans that give the list of names in the JNDI namespace or a list of system properties.

Chapter 3(Deploying applications) is especially useful if you are encountering tons of deployment errors. This chapter starts with explaining how to deploy applications as well as services. Next, the most important section which you shouldn’t miss reading at all; understanding class loading. In this section, the authors start with a description of the class loaders, then go into class scoping, which enables the application server to differentiate among classes. Next in this section, a look at loader repositories which enable several class loaders to share or isolate classes. The next few sections cover common deployment errors like class not found exception, class cast exception and so on. The last section in this chapter is about configuring data sources and Hibernate archives.

If you are concerned about the security of your applications than Chapter 4(Securing applications) shows you everything you need to know about securing your applications. The authors discuss in detail the fundamental concepts behind application security, including authentication, authorization, and encryption and how they are implemented in JBoss AS. They also show you how to configure by demonstrating how you can access security data from a database, LDAP, or other security datastores.

Part 2: Application Services

If you are deploying web applications to JBoss than you must read Chapter 5(Configuring JBoss Web Server). It covers configuring web applications, JBoss web server, the key configuration files. Next, is configuring specific things in web applications like the URL paths, then the authors discussed JBoss Web Server connectors and how they’re used to allow client requests to come in over different protocols. In the next section the authors give us an overview of why web applications have different class loading rules and show us how to configure different web-specific class loading parameters. Next comes valves, another feature of JBoss Web Server, and finally the last section is all about configuring JavaServer Faces.

In chapter 4, the authors discussed about the fundamentals of JBoss security and showed you how to configure security domains and login modules. Chapter 6(Securing web applications) explores the configuration files necessary to enable security, how to enable authentication and authorization for URLs relative to your application’s context path. And finally see how to enable secure communication for server authentication, mutual authentication, and client-certificate authentication.

If you are a huge fan of EJB’s just like I am, than Chapter 7(Configuring enterprise applications) shows you how to structure, deploy, and configure EJB applications. Then, you will learn how to configure the application server, and finally also secure EJB applications.

In Chapter 8(JBoss Messaging), you’ll learn about configuring messaging. The chapter begins by describing JMS and how JBoss Messaging is architected. You will see an example of a message-driven EJB and a message-driven POJO. The authors show you how to use a database for message storage, how to define destinations, and how to configure authentication and authorization for those destinations.

If you are quite familiar with web services than you skip the first few sections of Chapter 9(Configuring Web Services) which introduces you to web services, shows you how to develop a simple web service. However, don’t skip the next few sections which are quite interesting and cover topics such as JBossWS annotations, securing your web services using authorization and encryption.

Part 3: JBoss Portal

I did evaluate JBoss Portal sometime in 2006. So, I am not an expert in this specific area so I just skimmed over Chapters 10 and 11. These chapters provide a very basic introduction to JBoss Portal. So, I am just going to quote the topics covered in these two chapters:

• Creating a portlet using JSPs and JSTL
• Using the Admin portlet and the descriptor files to define portlet instances and portlet windows
• Using multiple instances within a portal
• Adding content to the CMS
• Configuring window appearance
• Setting up access control for portals, pages, and windows
• Creating a custom portal

Part 4: Going to Production

All the chapters in this section are important and very interesting. These chapters cover everything you will need to know when your application goes to production.

Chapters 12 and 13 are dedicated to clustering. Chapter 12(Understanding Clustering) begins with the fundamentals of clustering; It was interesting to set up a simple cluster as explained in this chapter and learn how to configure JGroups and JBoss Cache. Chapter 13 covers clustering as applied to Java EE specific application components and services like session EJB’s and entities, HTTP session replication, and JNDI.

If you need to access and improve the performance of your application, than you need to read Chapter 14(Tunning the JBoss Application Server). In this chapters you will see ways to tune the hardware, operating system, database, JVM, application server, and of course your deployed application. There are also a few tips on how to interpret thread dumps to pinpoint performance issues within your code.

Chapter 15(Going to production) is the last chapter in this book which covers topics such as selecting a platform, running JBoss AS as a service, running multiple JBoss AS instances on the same machine. You will also learn how to remove services which are not required, secure the management applications, change the default data source, database, configuring the EJB3 timer service and precompile JSPs.

Appendix A: JNDI namespaces

In this appendix, the authors explore how JBoss does JNDI binding and how to generically bind your applications in JNDI, making them more portable across application servers.

Appendix B: Change is inevitable

To quote the authors

This appendix contains changes that came after CR2 and before the book went to the printer. Any changes after that will appear on the book’s website

How to create an auto-incrementing column in MS SQL Server 2000

Unlike Microsoft SQL Server 2005 and 2008, MS SQL Server 2000 does not have a ROW_NUMBER() function which applies only to the results of a SELECT query as it doesn’t store any permanent value in the DB.

The way it works is in keeping with the principles of relational databases. There is no implict ordering of records in an RDBMS. Only by using ORDER BY, a particular ordering (and not sorting) can be enforced only when doing a SELECT.

Since Microsoft SQL Server 2000 doesn’t have ROW_NUMBER(), the need for creating a primary key column of format int with the auto-increment functionality can be achieved using the keyword IDENTITY(1,1). IDENTITY means “a unique IDENTITY for the record so long as this table exists”.

Usage example:

job_desc varchar(50) NOT NULL DEFAULT
min_lvl tinyint NOT NULL CHECK (min_lvl >= 10),
max_lvl tinyint NOT NULL CHECK (max_lvl <= 250) ) 

Microsoft’s T-SQL reference under SQL Server 2000 documentation at MSDN explains the IDENTITY property in detail at