Wednesday, February 24, 2016

Send Push Notification to Android Device

Often you may need to write services for a mobile APP. we all know apps throw push notifications, Push notification bring us the important information about the app.

How push notification is sent to user:



STEPS
1. First we fetch the message form the database to our application server. 
2. Send message to google GCM server.
3. Then the GCM server will push those messages when ever the mobile is 
     connected to the internet.

1. We all know how to fetch the data from the database.

2. Sending message to GCM server
a) First we need to add gcm-server dependency to our pom.xml file.
<dependency>
            <groupId>com.ganyo</groupId>
            <artifactId>gcm-server</artifactId>
            <version>1.0.2</version>
            <type>jar</type>
 </dependency> 

b) Create a class and copy the below code. 

import com.google.android.gcm.server.Message;
import com.google.android.gcm.server.Result;
import com.google.android.gcm.server.Sender;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class SendPushNotification {

    // google server will profde this key , 
    //when our app register for the push notification
    private static final String GOOGLE_SERVER_KEY
                                                                    = "AIzaSyDDuLlpT4xH";

    // the registration id, that is unique for the each android device
    private static final String regId = "APA91bHmjeWYjOROcG6oEt";

    public static void main(String[] args) {
        try {
            // message that we need to send 
            String userMessage = "message";
            // Register the sender
            Sender sender = new Sender(GOOGLE_SERVER_KEY);
            // prepate the message
            Message message = new Message.Builder().timeToLive(30)
                .delayWhileIdle(true).addData("message", userMessage).build();
            // send the message to the GCM server.
            Result result = sender.send(message, regId, 1);
            System.out.println("push status " + result.toString());

        } catch (IOException ex) {
            Logger.getLogger(SendPushNotification.class.getName())
                    .log(Level.SEVERE, null, ex);
        }
    }
}


3. There you go, you have successfully submitted    the push message to the GCM server. Next time your app client connect to the internet  you message will be delivered by the GCM server.

Tuesday, February 23, 2016

Configuring HTTPS in Tomcat


Pre Requisites:
1. Java   (i used version JDK 1.7) 
2. Tomcat (i used version Apache-tomcat-7.0.61)

We can do this in mainly 4 steps.
1. Create a keystore using java.
2. Configure Tomcat to use keystore.
3. Test it
4. Configuring our Application to work on HTTPS

1. Create a keystore using java
a) Open cmd and type cd "Program Files\Java\jdk1.7.0_25\bin"   
b) Now type keytool -genkey -alias tomcat -keyalg RSA  
After you typing and enter , this will ask you to enter password, then type your password, and after that it will ask you a series of questions, type the answers.
c) Lastly it will ask you: Enter key password for (RETURN if same as keystore  password): Now dont type anything hit the enter.
d) It will create .keysotre file at user home direcotry C:\Users\[user]\.keystore.

2. Configure Tomcat to use keystore.
a) Now goto your tomcat installation directory and enter into conf folder. There you will find the server.xml file
b) Find the following snippet

<!-- <Connector port="8443"  protocol="org.apache.coyote.http11.Http11Protocol"
     maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" /> -->

Uncomment it and configure it to find the keystore location, and provide the keystore passoword. Chage it so that it shoutld look like below

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="25"
    port="8443" keystoreFile="c:/Users/[user]/.keystore"  keystorePass="password"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />

3. Test it
a) Now start the server, and open browser and type https://localhost:8443/
b) If you observe http://localhost:8080/ also working.

4. Configuring our application to work on HTTPS
a) To make our application to work with the SSL, add the followg the snippet in the web.xml file
<security-constraint>
    <web-resource-collection>
        <web-resource-name>securedapp</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

b) Notice that transport-guarantee is set to CONFIDENTICAL
      is to make the applcation work with the SSL
C) If you want to turn off the SSL, you don’t need to delete the code above 
     from web.xml,  simply change CONFIDENTIAL to NONE.

References : 



Friday, February 19, 2016



Java Weekly, Issue 1

At the very beginning of this year, I decided to track my reading habits and share the best stuff here, on Programing and me
So i am starting this weekly series, 

1. Interview question of the week.

Difference between HashSet and TreeSet in Java 

 2. Tutorial of the week.
we all know about the eclipse, as a daily driver we use it daily, but most of us never read a tutorial about the eclipse.
here is the eclipse tutorial for you

3. Best article of the week.
How To Be an "In Demand" Java Developer in 2016 
2015 is over. its the time for all to revisit what we have learn so far and what the latest trends in the market,
and what we have to learn. so i go around the internet and got this article regarding the becoming the "In Demand" Java developer in 2016. 
here is the link for it.

Social Share

Comment

Formulir Kontak

Name

Email *

Message *

statistics

Recent

Techonlogy

Subscribe

Sponsor

About

Recent

Pages

Gallery

Blogger templates

Pages - Menu