Thursday, February 16, 2012

localhost to www




Here we will discuss how to host your web application in internet. Once the application is built and running on your local machine and the testings are over next step is to take it to internet.
First we need a domain name, like for my blog I use www.myexperimentswithjava.com. To check and book your preferred domain there are lots of service providers are available for example: google apps and  godady
Domains are normally sell for 1 year , 2 years or  for some fixed terms.
If the domain name what you are looking for is taken by some one. And still you want it you can try for resale, godady facilitate resales of domain. But normally these are expensive. With domains usually service providers give some free email account, which you can use for business purpose like admin@yoursitename.com.
Once you are ready with the domain. Next thing is the Web servers,application server and database server.
Depending upon the load and traffic you expect these three can be in one machine, or individual machine or for each multiple machine. If you expect more than 1000 users are going to access then professional consultancy is required.
If you have decided to host in a share resource (popular name is cloud), you can check for service provider. I had used Amazon elastic cloud, which is pretty good. For dedicated servers you need to buy physical hardware and the set it up to run it. It should have good connectivity and fixed IP. Now next thing is that to set up each layer. I prefer first to install data base, configure security setting backups. And then create application specific objects and load initial data. Then install application server and install the apps. Check the connectivity with database. And some testing with apps. Once the application looks fine, configure the app server to run on port 80.  Then by just typing the IP of your application server you should able to access your application on internet. And the application server IP must be a static one.

Next we have to configure our domain name to application server.  From domain service provide we will get a control panel to manage the domain. There we can set redirect, configure sub domain etc. In controll panel there will be an option to add MX record. We need to add two entry like for ex:
1) http://myexperimentswithjava.com
2) www.myexperimentswithjava.com

and these entries need to map to application server.
After the configuration it takes some time to work. Normally in a day or two your application can be reachable on internet by your domain.

All the best for your hosting experiments, do post your experience.

Friday, January 13, 2012

Something is in Air

If some on follow computers actually (nowadays its other way computers follow us) must heard about cloud. And the computer guys always copy the terms from real world to use. Like Inheritance, Cloud , Mouse etc ... sometime the original meaning of these words must be thinking to sue for copyright violation.
Well copying and stealing is never a problem in this industry. It is always appreciated.
"Cloud" is such a term today no one can afford to miss it. Companies, Developers and Customers  everybody like to have it.
Well lets understand what does Cloud means and how it make sense. To start we can say your computer is connected to another computer. Then networking is there from more than last 20 years. Each year its becoming more powerful. Computer can connect with each other they can send data and receive from another computer. The next thing was application which run on network by using resource of multiple computer. Web applications are fall in this category. They run in server and user can work with it remotely.
The service providers are hosting the service in server and can cater to multiple user, that brings down end user cost of using service. The application is customized as per users preference. This is something called application on cloud. Actually it is nothing but same web application. And it is customized as per user or groups of user.
Another thing is Computer infrastructure or platform on cloud. Its like you will able to use remote server, database or application server. Amazon, Oracle and Google provide these kind of service. Here the application developers can use these platform to develop, test and host. And its easy to scale as per usage. So its a very cost effective way of using resource. Still there are some concerns with data security, organisations are comfortable to store there important data in remote data center.
And another third category of cloud services are kind of hybrid between platform and application, Salesforce, Oracle public cloud and Apple's iCloud are such example. These gives developers platform to write application on cloud.
Certainly for medium/small scale industries can use cloud services for their IT needs. It enable to have good IT system in lower price.

Friday, December 16, 2011

Annotation in Java, the last moment of information


In any football match you will find the coach jumping, screaming telling something to the players. Its not only in football even in Cricket and other sports the coach will try to give some more information to the players on field.Though there was a detail game plan which involve coach, captain and all players much before the match. They know what to do everything is planned, still the coach has to say "one more thing" while the game is in progress.
Same case with us developer, we used to think and  design our codes then write. Still we want to add some more thing while compiling or execution time. I always wish I can say the compiler hey just suppress the warning go ahead compile it, while execution of program we have always want to say something to it about the environment. Well in Java we got some thing called Annotation which serve this purpose.
Annotation can be used to give additional information about a class,method or member to compiler or JVM.
Lets look at some example.
I want to write a class which represent an table in database. We say this kind of of object as Entity object.

@Entity @Table (name = "tbl_employee") 
public class Employee{
   @Id private Long employeeId;
   ...
   private Address address;
   @Clob public Address getAddress() { return address; }
   public void setAddress() { this.address = address; }
}

Here we say Employee is an entity class. It mapped to tbl_employee in database, employeeId is a primary key and getAddress return Clob.
These information is very essential for a ORM framework like JPA or Hibernate.

we use annotation to tune compiler also.

@SuppressWarnings(value = "unchecked")
void myMethod() { }



We use similarly for for run-time  to give more information to JVM. Like everything Java has some inbuilt annotation and user defined also. How to define a custom annotation and where it make sense is another topic. I will write it separately. Mean while you can look for more information here.