Posts tagged Java

Call Store Procedure dari Java

0

Sebagai contoh saya mempunyai package oracle seperti dibawah ini
Secara umum format pemanggilan procedure di java dapat dilihat pada template coding dibawah ini :

CallableStatement cs;
try {
    Memanggil prosedur tanpa parameter
    cs = connection.prepareCall("{call myproc}");
    cs.execute();

  // Pemanggilan procedure dengan nama myprocin dengan satu parameter
    cs = connection.prepareCall("{call myprocin(?)}");

    // Set nilai parameter
    cs.setString(1, "a string");

    // Execute the stored procedure
    cs.execute();

  // Call a procedure with one OUT parameter
    cs = connection.prepareCall("{call myprocout(?)}");

    // Register the type of the OUT parameter
    cs.registerOutParameter(1, Types.VARCHAR);

    // Execute the stored procedure and retrieve the OUT value
    cs.execute();
    String outParam = cs.getString(1);     // OUT parameter

  // Call a procedure with one IN/OUT parameter
    cs = connection.prepareCall("{call myprocinout(?)}");

    // Register the type of the IN/OUT parameter
    cs.registerOutParameter(1, Types.VARCHAR);

    // Set the value for the IN/OUT parameter
    cs.setString(1, "a string");

    // Execute the stored procedure and retrieve the IN/OUT value
    cs.execute();
    outParam = cs.getString(1);            // OUT parameter
} catch (SQLException e) {
}

berikutnya kita coba dengan sample menmanggil oracle procedure.

Java webMethods connectivity

0

Hari ini saya mencoba konektivitas java dengan webMethods (softwareAG) dan mencoba memanggil service diwebmethods menggunakan java. Untuk pembuatan contoh service anda bisa melihat link berikut create flowservice webMethods.

Contoh yang dibuat disini menggunakan Netbeans untuk memudahkan coding nya. webMethods menyediakan Java API untuk connectivitas dengan java yang library nya ada di WMHOME/Developer/lib atau di WMHOME/IntegrationServer/lib dengan nama client.jar.

tempatkan client.jar ini pada classpath program kita dengan menambahkan library di Netbeans.
berikut contoh script untuk mengeksekusi service webMethods menggunakan java.

package webmethods;

import com.wm.app.b2b.client.Context;
import com.wm.app.b2b.client.ServiceException;
import com.wm.data.IData;
import com.wm.data.IDataCursor;
import com.wm.data.IDataFactory;
import com.wm.data.IDataUtil;
import java.util.logging.Level;
import java.util.logging.Logger;

public class WMService {
   private String server;
   private String port;
   private String username;
   private String password;

   private Context context;

   private IData idata;
   private IDataCursor idc;

   private String namespace;
   private String serviceName;

   public WMService(){
        this.idata = IDataFactory.create();
        this.idc = idata.getCursor();
   }

   public WMService(String server, String port, String username, String password){
        this();
        this.server = server;
        this.port = port;
        this.username = username;
        this.password = password;
   }

   public void Connect(){
        try {
            this.context = new Context();
            this.context.connect(this.getServer()+':'+this.getPort(), this.getUsername(), this.getPassword());
        } catch (ServiceException ex) {
            Logger.getLogger(WMServer.class.getName()).log(Level.SEVERE, null, ex);
        }
   }

    public Context getContext() {
        return context;
    }

    public void setParam(String param,String value){
        IDataUtil.put(idc, param, value);
    }

    public void setParam(String param,int value){
        IDataUtil.putInt(idc, param, value);
    }

    public void setNamespace(String namespace) {
        this.namespace = namespace;
    }

    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }

    public IData getIdata() {
        return idata;
    }

    public void destroy(){
        this.idc.destroy();
    }

   public void executeService(){
        IData odata = IDataFactory.create();
        try {
            odata = this.context.invoke(this.namespace, this.serviceName, this.idata);
        } catch (ServiceException ex) {
            Logger.getLogger(WMService.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("Hasil = "+ odata.toString());
    }        

     public static void main(String[] args) {
           WMService wm = new WMService("192.168.1.10","5555","Administrator","manage");
           wm.Connect();

           wm.setNamespace("neuronTrain.businessProcess");
           wm.setService("aritmatika");

           wm.setParam("opr","+"); // variable input opr
           wm.setParam("bil1",3);
           wm.setParam("bil2",4);

           wm.executeService();

    }
}

Service webMethods yang dipanggil adalah aritmatika yang berapa pada namespace neuronTrain.businessProcess dengan input output seperti seperti gambar berikut

setelah dijalankan hasilnya adalah :

run:
Connected
Hasil >>>BasicData:hasil=7,num1=3,num2=4,opr=+,bil1=3,bil2=4,value=7<<<
BUILD SUCCESSFUL (total time: 2 seconds)

Access Connection Pooling from JSP

0

Pada tulisan sebelumnya sudah dijelaskan langkah-langkah membuat Connection Pooling di Glassfish, Pertanyaannya bagaiman cara menggunakan connection pooling yang sudah dibuat misal dari JSP.

Sebagai contoh yang sederhana saya ingin menampilkan seluruh daftar karyawan.
IDE yang saya gunakan adalah Netbeans versi 6.8 untuk memudahkan melakukan editing. Untuk cara membuat project web menggunakan java akan dibahas secara terpisah pada kategory Netbeans.

berikut struktur file setelah wizard pembuatan project selesai

Dari gambar diatas ada 2 file yang digunakan yaitu index.jsp dan DBControl.java
file DBControl.java digunakan untuk mengakses resource JDBC Connection Pooling, script secara lengkap ada dibawah ini

package com.neuron.db;

import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

/**
 *
 * @author massri@neuronworks.co.id
 */
public class DBControl {

    String JNDIDataSource ;
    Connection conn;

    public DBControl() {
        this.JNDIDataSource = "jdbc_train";
        this.Init();
    }

    public void Init() {
        try {
            Context ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup(this.JNDIDataSource);
            this.conn = ds.getConnection();
            this.conn.setAutoCommit(false);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Connection getConn() {
        return conn;
    }
}

Class ini dibuat sederhana untuk pengembangan dan teknik yang lebih lanjut akan dibahas kemudian. Pada script diatas ada baris this.JNDIDataSource = “jdbc_train”, “jdbc_train” adalah JDBC Resource yang sudah kita buat seperti pada tulisan sebelumnya seting connection pooling

Dan berikut script index.jsp

<%--
    Document   : index
    Created on : 28 Jan 10, 21:04:00
    Author     : massri@neuronworks.co.id
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>
<%@ page import="com.neuron.db.DBControl"%>


    
        

    
    

JSP Test Connection Pooling

<% DBControl dbctl = new DBControl(); Connection conn = dbctl.getConn(); if (conn == null) { out.println("Gak Connect"); } else { out.println("Connect"); } String sql = "SELECT EMPLOYEE_ID,FIRST_NAME || ' ' || LAST_NAME NAME FROM EMPLOYEES WHERE ROWNUM <=10"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ResultSetMetaData rsMetaData = rs.getMetaData(); int columnCount = rsMetaData.getColumnCount(); %> <% for (int i = 1; i <= columnCount; i++) { %> <% } %> <% while (rs.next()) { out.println(" "); for (int i = 1; i <= columnCount; i++) { out.println(" "); } out.println(" "); } %>
<% out.print(rsMetaData.getColumnName(i).trim());%>
" + rs.getString(i) + "

Setelah di deploy ke server berikut contoh hasil yang didapatkan

selesai…..

Java dan Oracle Ref Cursor

0

Topik kali ini adalah membuat program java yang memanggil oracle store procedure yang outputnya ref cursor. Karena saya sendiri kadang sering lupa nah akhirnya coba tulis disini saja, siapa tahu nantinya bisa berguna.

Pertama kita harus punya procedure yang outputnya ref cursor untuk dipanggil dari program java. Untuk hal ini bisa melihat postingan sebelumnya Oracle cursor

Bismillah kita mulai kodingnya :D

/*
Import Class
*/
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Types;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.jdbc.driver.OracleCallableStatement;
import oracle.jdbc.driver.OracleTypes;
import oracle.jdbc.driver.OracleResultSet;

public class JavaOraCursor {
    final static String driverClass    = "oracle.jdbc.driver.OracleDriver";
    final static String connectionURL  = "jdbc:oracle:thin:@192.168.1.9:1521:NEURON";
    final static String userID         = "HR";
    final static String userPassword   = "HR";
    Connection   con                   = null;

   /*
     Constructor
   */
    public JavaOraCursor (){
        try {
             Class.forName(driverClass).newInstance();
             this.con = DriverManager.getConnection(connectionURL, userID, userPassword);
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void ExecuteCursor(){
         OracleCallableStatement oraCallStmt   = null;
         OracleResultSet         empResultSet = null;

         try {

            oraCallStmt = (OracleCallableStatement) con.prepareCall(
                "{call PKG_EMPLOYEE.getEmployeeData(?,?)}"
            );
             oraCallStmt.setInt(1, 20);
             oraCallStmt.registerOutParameter(2, OracleTypes.CURSOR);

            oraCallStmt.execute();

            empResultSet = (OracleResultSet) oraCallStmt.getCursor(1);

            while (empResultSet.next()) {
                System.out.println(
                    " - " +
                    empResultSet.getString(2) + " (" + empResultSet.getInt(1) + ")" );
            }
            System.out.println();

            oraCallStmt.close();

        } catch (SQLException e) {

            e.printStackTrace();

        }
    }

   public void closeConnection() {

        try {
            System.out.print("  Closing Connection...\n");
            con.close();

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }
    public static void main(String[] args)
            throws java.lang.InterruptedException {

       JavaOraCursor mainProg= new JavaOraCursor ();
        mainProg.ExecuteCursor();
        mainProg.closeConnection();

    }
}
Go to Top