Programming
Tutorial Pemrograman web, desktop, sistem integrasi, database dll..
Java webMethods connectivity
0Hari 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)
Object Oriented Programming in PHP
0Untuk hari ini saya akan coba menulis berkaitan dengan PHP khususnya pemrograman berorientasi object dengan PHP.
Baik kita mulai dari konsep dasarnya OOP di php
Class
Mendefinisikan class di PHP menggunakan keyword class diikuti dengan nama kelas, Nama kelas ini tidak boleh keyword yang sudah digunakan oleh php.
name = $name;
}
public function getName(){
return $this->name;
}
}
// Contoh deklaresi object dari kelas Student
$std = new Student();
$std::setName("Massri");
echo $std->getName();
?>
Pada code diatas untuk mengakses method dari suatu object bisa menggunakan “::” atau “->”, $this adalah pseudo-variable yang digunakan untuk memanggil metod dari object itu sendiri.
Untuk membuat instance dari class digunakan keyword new
extends
Extends digunakan untuk mewariskan methods dan attribute ke kelas turunannya, untuk deklarsinya di tempatkan setelah nama kelas
Access Connection Pooling from JSP
0Pada 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();
%>
| <% out.print(rsMetaData.getColumnName(i).trim());%> | <% } %>
|---|
| " + rs.getString(i) + " | "); } out.println("
Setelah di deploy ke server berikut contoh hasil yang didapatkan
selesai…..
Java dan Oracle Ref Cursor
0Topik 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
/*
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();
}
}
