Home Webservices WEBSERVICE USING APACHE AXIS- TUTORIAL-2 J2ME CLIENT FOR EJB & EJB-WEBSERVICE
Questions:Ask|Latest


 
 

Share on Google+Share on Google+

WEBSERVICE USING APACHE AXIS- TUTORIAL-2 J2ME CLIENT FOR EJB & EJB-WEBSERVICE

Advertisement
In the previous section,we've dealt with how to write WAP client for accessing ejb. In the same way, we are going to see how to write J2ME client for ejb.We divide this part into two.

WEBSERVICE USING APACHE AXIS- TUTORIAL-2   J2ME CLIENT FOR EJB & EJB-WEBSERVICE
R.S.RAMASWAMY (rs.ramaswamy@gmail.com)

In  the previous section,we've dealt with how to write WAP client for accessing ejb. In the same way, we are going to see how to write J2ME client for ejb.We divide this part into two. They are

(a) creating J2me client for accessing ejb directly

(b) creating j2me client for accessing ejb as webservice. 

Let's see the first part now. 

Create and complie j2meServlet.java in

the working folder ie. c:\sam 

c:\sam> edit j2meServlet.java

 j2meServlet.java

 import java.io.*;

import javax.ejb.*;

import java.rmi.*;

import javax.rmi.*;

import javax.naming.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

 public class j2meServlet extends HttpServlet

{

 public void doPost

   (HttpServletRequest request,

   HttpServletResponse response)

       throws ServletException,IOException

 {

   response.setContentType("text/html");

   try

    {

    System.out.println("Please wait----!");

    Properties     props = new Properties();

   props.put

(Context.INITIAL_CONTEXT_FACTORY,   "weblogic.jndi.WLInitialContextFactory");

   props.put(Context.PROVIDER_URL,

              "t3://localhost:7001");

    Context   ctx = new InitialContext(props);

    System.out.println("Context ok");

    sqlHome home = (sqlHome)ctx.lookup("sqlJndi");

       System.out.println("Home ok");

    sqlRemote   remote = home.create();

   System.out.println("Remote ok");

   String s = request.getParameter("text1");

  System.out.println(s);

   String s1=s+"%";

   String            sql=

"select * from table1 where name like '"+s1+"' ";

     System.out.println(sql);

   String msg= remote.getdata(sql);

  DataOutputStream   out =

  new DataOutputStream(response.getOutputStream());

  out.writeUTF(msg);

  System.out.println(msg);

  }

  catch(Exception e1)

  {   System.out.println(" " + e1);   }

 }

 } 

c:\sam> javac j2meServlet.java

 copy j2meServlet.class  to:

d:\tomcat 4.1\webapps\root\web-inf\classes

Next step is to create a midlet for J2ME.Create ejbmidlet.java in our current working folder.

c:\sam> edit ejbmidlet.java

//ejbmidlet.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import java.io.*;

public class ejbmidlet  extends MIDlet implements CommandListener

{

     Display        display1;

     Form           form1,form2;

     Command        button1,button2;

     TextField  text1;

     StringItem   s1;

 public ejbmidlet()

        {

          display1 = Display.getDisplay(this);

          text1    = new TextField(null,"a",100,TextField.URL);

          form1 = new Form("Type in a URL:");

          form1.append(text1);

          button1 = new Command("SEND",Command.OK,1);

          button2 = new Command("Back",Command.OK,1);

          form1.addCommand(button1);

          form1.setCommandListener(this);

        }

 public void startApp()

         {

              display1.setCurrent(form1);

         }

  public void pauseApp() {}

         public void destroyApp(boolean unconditional)    {}

  public void commandAction(Command cmd,Displayable d)

          {

 String     url = "http://localhost:8080/servlet/j2meServlet";

             if(cmd==button1)

             {

               try

               {

                    String s = text1.getString();             

                    url = url+"?text1="+s;

                    System.out.println(url);

 

  HttpConnection  hc =

         (HttpConnection)Connector.open(url);

  hc.setRequestMethod(HttpConnection.POST);

  DataOutputStream dos =

     new DataOutputStream(hc.openOutputStream());

  dos.writeUTF(s);

  dos.flush();

  System.out.println(s +" Sent");

 

  DataInputStream   dis =

     new DataInputStream(hc.openInputStream());

  String msg=dis.readUTF();

  System.out.println(msg);

  form2 = new Form("Get Result");

               s1 = new StringItem(null,msg);

               System.out.println(s1);

               form2.append(s1);

               form2.addCommand(button2);

               form2.setCommandListener(this);

               display1.setCurrent(form2);

               System.out.println("displayed");    

              }catch(Exception e){}

        }

             else if (cmd == button2)

             {

               text1.setString(" ");

               display1.setCurrent(form1);

            }              

          }

}

No need to complie the midlet file.

It is taken care of by J2ME Wireless Toolkit. For running the toolkit from our working folder set the path as below  

c:\sam> set path=%path%;c:\j2mewtk\bin; 

c:\sam> ktoolbar 

This will open the Toolkit window.Create a new Project by clicking the button 'New project'.and give the project name as 'ejbdemo1' as project name.Just minimize the window. 

Now copy ejbmidlet.java from our working folder to 'src' folderof 'ejbdemo1'. 

c:\sam>  copy ejbmidlet.java  c:\j2mewtk\apps\ejbdemo1\src 

Then go to the toolkit and click 'settings'.

In the 'midlets' tab,add midlet class name ie. ejbmidlet

Click 'Build' for compilation. After source file is compiled successfuly, Click 'Run' button and execute our midlet. (tomcat41 is running). 

Type a letter 'a' in the textbox and click 'send'. Midlet program sends the letter to the servlet which'll form sqlquery and contact ejb for fetching the result. Recordset for the name starting with letter 'a' will be displayed in the wireless browser.Let us now create a J2ME client accessing ejb webservice.create and complie j2meaxisservlet.java 

c:\sam> edit j2meaxisservlet.java

j2meaxisservlet.java

import java.net.URL;

import org.apache.axis.client.Service;

import org.apache.axis.client.Call;

import org.apache.axis.encoding.XMLType;

import javax.xml.rpc.ParameterMode;

import javax.xml.namespace.QName;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*; 

public class j2meaxisservlet extends HttpServlet

{

    public void doPost (HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException

    {

        response.setContentType("text/html"); 

        try{

            String url = "http://localhost:8080/axis/services/sqlservice";

            String method = "getdata"; 

           String s = request.getParameter("text1");

           String s1=s+"%";

           String sql="select * from table1 where name like '"+s1+"' ";

           System.out.println("sql is"+sql); 

            Service service = new Service(); 

            Call call = (Call) service.createCall();

    System.out.println("point1....call"); 

            call.setTargetEndpointAddress ( new java.net.URL(url));

            call.setOperationName ( new QName("sqlservice",method));

             call.addParameter("sql",XMLType.XSD_STRING,ParameterMode.IN);

            call.setReturnType(XMLType.XSD_STRING);

            System.out.println("Call Ok");           

            Object[] params = new Object[] { sql }; 

         String s2 = (String) call.invoke(params); 

        DataOutputStream out1 = new DataOutputStream(response.getOutputStream());

        out1.writeUTF(s2);

        System.out.println(s2);             

        }catch(Exception e) { System.out.println(""+e);  }

    }

}

 c:\sam> javac j2meaxisservlet.java 

copy j2meaxisservlet.class  to

  d:\tomcat 4.1\webapps\axis\web-inf\classes 

Start tomcat4.1 server and do the procedure mentioned in the first part for deploying midlet. 

c:\sam> edit   j2meaxismidlet.java

javaismidlet.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import java.io.*; 

public class j2meaxismidlet  extends MIDlet

              implements CommandListener

{

     Display        display1;

     Form           form1,form2;

     Command        button1,button2;

     TextField  text1;

     StringItem   s1; 

        public j2meaxismidlet()

        {

          display1 = Display.getDisplay(this);

  text1   = new TextField(null,"a",100,TextField.URL);

          form1 = new Form("Type in a URL:");

          form1.append(text1);

          button1 = new Command("SEND",Command.OK,1);

          button2 = new Command("Back",Command.OK,1);

          form1.addCommand(button1);

          form1.setCommandListener(this);

        }

          public void startApp()

         {

              display1.setCurrent(form1);

         }

         public void pauseApp() {} 

  public void destroyApp(boolean unconditional)    {}

  public void commandAction(Command cmd,Displayable d)

          {

 String     url = "http://localhost:8080/axis/servlet/j2meaxisservlet";

             if(cmd==button1)

             {

               try

               {

                    String s = text1.getString();             

                    url = url+"?text1="+s;

                    System.out.println(url); 

  HttpConnection   hc =

        (HttpConnection)Connector.open(url); 

  hc.setRequestMethod(HttpConnection.POST); 

  DataOutputStream     dos =

       new DataOutputStream(hc.openOutputStream());

  dos.writeUTF(s);

  dos.flush();

   System.out.println(s +" Sent");                   

  DataInputStream   dis =

        new DataInputStream(hc.openInputStream()); 

  String msg=dis.readUTF(); 

  System.out.println(msg); 

               form2 = new Form("Get Result");

               s1 = new StringItem(null,msg);

               System.out.println(s1);

                form2.append(s1);

               form2.addCommand(button2);

               form2.setCommandListener(this);

               display1.setCurrent(form2);

              System.out.println("displayed");                                    

           }catch(Exception e){}

              }

             else if (cmd == button2)

             {

               text1.setString(" ");

               display1.setCurrent(form1);

            }              

           }

}

That completes our rather long tutorial! Student-readers are requested to actually try all the above lessons in this carefully crafted tutorial..

visit http://in.geocities.com/rsramsam

Advertisement

Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: March 13, 2008

Ask Questions?    Discuss: WEBSERVICE USING APACHE AXIS- TUTORIAL-2 J2ME CLIENT FOR EJB & EJB-WEBSERVICE   View All Comments

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments
DMCA.com