레이블이 java인 게시물을 표시합니다. 모든 게시물 표시
레이블이 java인 게시물을 표시합니다. 모든 게시물 표시

2022년 1월 27일 목요일

Java Web Start 이용해서 excel 실행

참고사이트 https://www.baeldung.com/java-web-start https://github.com/eugenp/tutorials/tree/master/jws https://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/development.html#security * 이클립스에서 dynamic web app 프로젝트 생성 * Hello 클래스 구현 -------------------------------------------------------------------------------- package com.example; import javax.swing.JFrame; import javax.swing.JLabel; public class Hello { public static void main(String[] args) throws Exception { JFrame f = new JFrame("main"); f.setSize(200, 100); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("Hello, world!"); f.add(label); f.setVisible(true); //FilePermission p = new FilePermission("<>", "execute"); Runtime.getRuntime().exec("cmd /c start excel.exe"); } } -------------------------------------------------------------------------------- * Configure > Add maven nature * pom.xml -------------------------------------------------------------------------------- '>http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 webapp webapp 0.0.1-SNAPSHOT war src maven-compiler-plugin 3.7.0 1.8 1.8 maven-war-plugin 3.0.0 WebContent org.apache.maven.plugins maven-jar-plugin compile jar com.example.Hello ${project.basedir}/WebContent -------------------------------------------------------------------------------- * servlet 관련 jar 파일 복사 아래 URL에서 jardiff.jar, jnlp-servlet.jar 파일을 받아 WEB-INF/lib에 복사 https://github.com/eugenp/tutorials/tree/master/jws/java-core-samples-lib * WEB-INF/web.xml 편집 -------------------------------------------------------------------------------- Java Web Start JNLP Example for Java Web Start Article JnlpDownloadServlet jnlp.sample.servlet.JnlpDownloadServlet JnlpDownloadServlet *.jar JnlpDownloadServlet *.jnlp index.html -------------------------------------------------------------------------------- * WebContent 디렉토리에 index.html 파일생성 -------------------------------------------------------------------------------- Launch -------------------------------------------------------------------------------- * WebContent 디렉토리에 hello.jnlp 파일생성 -------------------------------------------------------------------------------- Hello Example -------------------------------------------------------------------------------- * jar 파일생성: 프로젝트 우클릭 > Run As > Maven Install * jar 파일 sign cmd > cd [webapp-dir] # keytool -genkey -keystore myKeystore -alias myself # keytool -selfcert -alias myself -keystore myKeystore # keytool -list -keystore myKeystore # jarsigner -keystore myKeystore webapp-0.0.1-SNAPSHOT.jar myself * 톰켓에 Dynamic web app 프로젝트를 추가하고 시작 * http://localhost:8080/webapp/ 접속 & Launch 버튼클릭 hello.jnlp 다운로드 hello.jnpl 파일열기

2020년 8월 28일 금요일

Java System.currentTimeMillis()를 오라클에서

 select systimestamp

, to_number(sysdate - to_date('01-01-1970','DD-MM-YYYY')) * (24 * 60 * 60 * 1000) milliseconds

from dual


2020년 7월 21일 화요일

jcmd 사용법

* jcmd 사용법
1. jcmd 실행하면 실행중인 자바 프로세스 목록 출력됨

2. jcmd <1의 PID> 명령
명령어 목록은 아래 링크 참조
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html

ex. 실행중인 Jmeter의 JVM 버전확인
$ jcmd
40336 ApacheJMeter.jar

$ jcmd 40336 VM.version

2015년 12월 3일 목요일

SWT 개발환경 구축하기



SWT 다운로드
http://www.eclipse.org/swt/

File > Import > General > Existing Projects into Workspace
Select archive file 선택하고 Browser 버튼을 클릭해서 다운받은 파일 지정하고 Finish 클릭

File > New > Java Project 선택하고 기타 정보를 입력한 후 프로젝트 생성
생성한 프로젝트 Properties에서 Java Build Path > Projects 선택하고 Add 버튼 클릭
org.eclipse.swt 체크하고 OK





2014년 5월 21일 수요일

get last modified file by pattern(wildcard)




import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
import java.util.Comparator;

import org.apache.commons.io.filefilter.WildcardFileFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LastModifiedFileByPattern {
public static Logger logger = LoggerFactory.getLogger(FileFilterTest.class);
@SuppressWarnings({ "unchecked", "rawtypes" })
public static File getLastModifiedFile(File dir, String wildcard) {
File file = null;
if (dir == null || dir.isDirectory() == false) {
return null;
}
FileFilter fileFilter = new WildcardFileFilter(wildcard);
File[] files = dir.listFiles(fileFilter);
if (files == null || files.length == 0) {
return null;
}
Arrays.sort(files, new Comparator() {
    public int compare(Object o1, Object o2) {
        if (((File)o1).lastModified() > ((File)o2).lastModified()) {
            return -1;
        } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
            return +1;
        } else {
            return 0;
        }
    }
});
file = files[0];
return file;
}
public static void main(String[] args) {
File dir = new File("/somepath/");
String wildcard = "service_*.log";
File f = getLastModifiedFile(dir, wildcard);
logger.debug(f.toString());
}


}

Get All Classes Within A Package




http://dzone.com/snippets/get-all-classes-within-package


public static void main(String[] args) throws Exception{
String packageName = "a.b.c.d";

List<?> list = getClasses(packageName);
System.out.println(list);
}

/**
* Scans all classes accessible from the context class loader which belong to the given package and subpackages.
*
* @param packageName The base package
* @return The classes
* @throws ClassNotFoundException
* @throws IOException
*/
public static List<?> getClasses(String packageName) throws ClassNotFoundException, IOException {
   ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
   assert classLoader != null;
   String path = packageName.replace('.', '/');
   Enumeration<URL> resources = classLoader.getResources(path);
   List<File> dirs = new ArrayList<File>();
   while (resources.hasMoreElements()) {
       URL resource = resources.nextElement();
       dirs.add(new File(resource.getFile()));
   }
   ArrayList<Class<?>> classes = new ArrayList<Class<?>>();
   for (File directory : dirs) {
       classes.addAll(findClasses(directory, packageName));
   }
   return classes;
}

/**
* Recursive method used to find all classes in a given directory and subdirs.
*
* @param directory   The base directory
* @param packageName The package name for classes found inside the base directory
* @return The classes
* @throws ClassNotFoundException
*/
private static List<Class<?>> findClasses(File directory, String packageName) throws ClassNotFoundException {
   List<Class<?>> classes = new ArrayList<Class<?>>();
   if (!directory.exists()) {
       return classes;
   }
   File[] files = directory.listFiles();
   for (File file : files) {
       if (file.isDirectory()) {
           assert !file.getName().contains(".");
           classes.addAll(findClasses(file, packageName + "." + file.getName()));
       } else if (file.getName().endsWith(".class")) {
           classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6)));
       }
   }
   return classes;
}

이름 구분자로 String format하기

Apache commons lang의 StrSubstitutor 클래스를 이용한다.
(commons-lang 2.2 부터 지원)

Map valuesMap = new HashMap();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}.";
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);

결과(resolvedString) : The quick brown fox jumped over the lazy dog.


http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/index.html?org/apache/commons/lang/StringUtils.html

2014년 4월 22일 화요일

Java web service framework 비교



Support Contract 비고
Apache AXIS2
first, last 가장 많이 사용(기준?)
Spring framework 적용가능
Apache CXF JAX-WS
JAX-RS
SAAJ
Web Services Metadata for the Java Platform
first, last 가장 널리 사용되고 있는 추세
(AXIS2에서 CXF로 넘어오는 경우가 많음)
AXIS2 보다 사용하기 편리
웹서비스 관련 표준들을 준수
(WSDL 2.0은 아직 지원하지 않음)
최소한의 오버해드로 웹서비스 관련 프레임웍 중 성능이 가장 뛰어남(?)
Spring framework 적용가능
전자정부 표준 프레임워크에서 사용
Jersey JAX-RS ?
Spring-WS JAX-RS first JAX-WS 표준을 완벽히 지원하지 않음
JAX-WS 같은 Spring annotation 지원
개발자가 작성해야할 코드가 가장 작음
RESTEasy JAX-RS
JAXB
? JBoss 프로젝트
Rich set of providers for: XML, JSON, YAML, Fastinfoset, Multipart, XOP, Atom, etc.
JAXB marshalling into XML, JSON, Jackson, Fastinfoset, and Atom
as well as wrappers for maps, arrays, lists, and sets of JAXB Objects.
Gzip content-encoding 지원
Restlet JAX-RS ? 경량 REST 프레임워크
Xstream, Jackson을 이용한 XML, JSON marshalling, unmarshalling 지원
FreeMarker, Velocity 통합가능
대용량 멀티파트 데이터 처리를 위해 Apache FileUpload와 통합가능
Spring @MVC
N/A Spring MVC를 이용해서 RESTful 서비스를 구현
https://spring.io/guides/gs/rest-service/


* JAX-WS : Java API for XML-Based Web Services (JAX-WS) 2.0 – JSR-224
* JAX-RS : The Java API for RESTful Web Services – JSR-311
* SAAJ : SOAP with Attachments API for Java (SAAJ) – JSR-67
* JAXB : Java Architecture for XML Binding


2012년 7월 27일 금요일

sqlite에 auto increment 값 입력하고 입력된 일련번호 값 받아오기


CREATE TABLE userInfo
  userId INTEGER PRIMARY KEY,
  first_name TEXT NOT NULL,
  last_name TEXT NOT NULL,
);


<insert id="insertUser" parameterType="userVo">
<![CDATA[
INSERT INTO userInfo (
first_name
   ,last_name
) VALUES (
    #{firstName}
   ,#{lastName}
)
]]>
<selectKey keyProperty="userId" resultType="int">
SELECT LAST_INSERT_ROWID()
</selectKey>
</insert>


public class UserInfoDAOImpl extends BaseDAO implements UserInfoDAO{
    @Override
    public int insertJob(UserVo userVo) throws OSPException {
        int returnVal = -1;
        returnVal = (Integer) getSqlSession().insert("com.test.dao.UserInfoDAO.insertUser", userVo);
       
        System.out.println("userId="+userVo.getUserId());
       
        return returnVal;
    }
   
}

2012년 6월 14일 목요일

java로 ubuntu 환경에서 /proc/stat을 이용해 CPU 사용량 체크하기


package test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class CpuRateByCore {
    public static int INTERVAL = 1000;

    public static String[] getCpuUsageByCore() {
        String[] result = null;
        String[] command = { "bash", "-c", "cat /proc/stat | grep 'cpu[0-9]'" };

        Runtime runtime = Runtime.getRuntime();
        BufferedReader reader = null;
        List<CpuInfoVo> prevInfoList = new ArrayList<CpuInfoVo>();
        List<CpuInfoVo> diffInfoList = new ArrayList<CpuInfoVo>();
       
        try {
            Process process = runtime.exec(command);
            reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = null;
            String[] columns = null;
            long total = 0;
            long idle = 0;
            int x = 0;
           
           
           
            while ( (line = reader.readLine()) != null ) {
                // System.out.println(line);
                line = line.replace("  ", " ");
                columns = line.split(" ");
   
                total = 0;
                idle = 0;
                for ( int i = 1 ; i < columns.length ; i++ ) {
                    total += Long.parseLong(columns[i]);
                }
                idle = Long.parseLong(columns[4]);
               
                CpuInfoVo vo = new CpuInfoVo();
                vo.setTotal(total);
                vo.setIdle(idle);
               
                prevInfoList.add(vo);
               
                x++;
            }

            // sleep 1sec
            //Thread.sleep(INTERVAL);
            process = runtime.exec(command);
            reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            x = 0;
            while ( (line = reader.readLine()) != null ) {
                line = line.replace("  ", " ");
                columns = line.split(" ");

                total = 0;
                idle = 0;
                for ( int i = 1 ; i < columns.length ; i++ ) {
                    total += Long.parseLong(columns[i]);
                }
                idle = Long.parseLong(columns[4]);

                long diffTotal = total - prevInfoList.get(x).getTotal();
                long diffIdle = idle - prevInfoList.get(x).getIdle();
                long cpuRate = 0;
                if (diffTotal != 0)
                    cpuRate = 100 * ( diffTotal - diffIdle ) / diffTotal;
               
                CpuInfoVo vo = new CpuInfoVo();
                vo.setTotal(diffTotal);
                vo.setIdle(diffIdle);
                vo.setRate(cpuRate);
                diffInfoList.add(vo);
                x++;
            }
            result = new String[diffInfoList.size()];
            for (int i=0; i<diffInfoList.size(); i++) {
                CpuInfoVo cpuInfoVo = (CpuInfoVo)diffInfoList.get(i);
                result[i] = Long.toString(cpuInfoVo.getRate());
            }
        }
        catch ( Exception e ) {
            e.printStackTrace();
        }

        return result;
    }

    public static void main(String[] args) throws Exception {
        String[] cpuRates = getCpuUsageByCore();
       
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String ymd = sdf.format(Calendar.getInstance().getTime().getTime());
       
        StringBuilder message = new StringBuilder();
        message.append(ymd);
        int total = 0;
        for ( int i = 0 ; i < cpuRates.length ; i++ ) {
            message.append(" ").append(cpuRates[i]);
            total += Integer.parseInt(cpuRates[i]);
        }
        int cpuRate = total / cpuRates.length;
        message.append(" (avg)").append(cpuRate);
        System.out.println(message);
    }

}

2011년 10월 28일 금요일

우분투 11.10에 Sun JDK 설치하기


Synaptic Package Manager 실행  (설치 않되어 있다면 설치)

우분투 소프트웨어 센터 실행
설정 > 저장소 (Settings > Repositories)
기타 소프트웨어 탭
추가 클릭하고 ppa:ferramroberto/java 입력하고 소스추가 클릭
닫기
새로고침

OpenJDK 삭제
Sun-Java 로 검색해서 패키지 설치

2011년 8월 12일 금요일

log4j 사용하기



log4j 설정

* 이클립스를 사용하고 Dynamic Web Project 라는 가정하에 설명

다운로드
http://logging.apache.org/log4j/1.2/download.html


설정
log4j는 log4j.properties 파일로 설정
src 디렉토리 아래에 log4j.properties 파일을 생성
(파일 저장시 이클립스가 log4j.properties 파일을 WEB-INF/classes로 알아서 복사함)
log4j.properties 파일을 아래와 같이 편집

--------------------------------------------------------------------------------
log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Print only messages of level ERROR or above in the package noModule.
log4j.logger.noModule=WARN

# Pattern to output the caller's file name and line number.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n

# file log
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=C:/app/apache-tomcat-6.0.29/logs/myapp_erp.log
log4j.appender.logfile.MaxFileSize=100000KB
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}][%-5p](%F:%L) - %m%n

# OpenSymphony Stuff
log4j.logger.com.opensymphony=WARN
log4j.logger.org.apache.struts2=WARN

# Spring Stuff
log4j.logger.org.springframework=WARN

########################## APPLICATION LOG CONFIGURATION ###########################

log4j.logger.com.test=DEBUG, logfile
log4j.logger.com.test.Tester=INFO, logfile

log4j.logger.com.test=DEBUG, stdout
log4j.logger.com.test.Tester=INFO, stdout
--------------------------------------------------------------------------------

APPLICATION LOG CONFIGURATION 이후의 내용을 수정
log4j.logger 이후에 설정할 패키지명 역순으로 적고 로그레벨과 appender 이름을 입력
위의 경우 com.test.Tester 클래스는 INFO level로 com.test 이하에 속한 패키지의 클래스들은 DEBUG 레벨로 로그가 기록


** 참고: 로그레벨
1. DEBUG (the least serious)
2. INFO
3. WARN
4. ERROR
5. FATAL (the most serious)


JAVA 클래스에서 사용예
--------------------------------------------------------------------------------
public class Tester {
  private Logger logger = Logger.getLogger(Tester.class);
  ...

  public void logIt() {
    logger.info("im info log");
    logger.debug("im debug log");
  }
  ...
}
--------------------------------------------------------------------------------


JSP 클래스에서 사용예
--------------------------------------------------------------------------------
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass());

logger.info("im info log");
logger.debug("im debug log");
--------------------------------------------------------------------------------


2011년 8월 10일 수요일

JAVA and SQLite


아래를 클릭해서 jar 파일을 다운로드 한다.
http://files.zentus.com/sqlitejdbc/sqlitejdbc-v056.jar

JAVA 클래스패스에 다운로드 jar 파일을 추가한다.
이클립스 환경이라면 Build Path에 추가하던지 Dynamic Web Project라면 WEB-INF/lib에 파일을 복사

테스트 클래스를 만들고 아래 코드를 추가한 다음 실행!
이클립스 환경이라면 F11 누르고 Java Application 실행

*참고 http://www.zentus.com/sqlitejdbc/usage.html


import java.sql.*;

public class Test {
  public static void main(String[] args) throws Exception {
    Class.forName("org.sqlite.JDBC");
    Connection conn =
      DriverManager.getConnection("jdbc:sqlite:test.db");
    Statement stat = conn.createStatement();
    stat.executeUpdate("drop table if exists people;");
    stat.executeUpdate("create table people (name, occupation);");
    PreparedStatement prep = conn.prepareStatement(
      "insert into people values (?, ?);");

    prep.setString(1, "Gandhi");
    prep.setString(2, "politics");
    prep.addBatch();
    prep.setString(1, "Turing");
    prep.setString(2, "computers");
    prep.addBatch();
    prep.setString(1, "Wittgenstein");
    prep.setString(2, "smartypants");
    prep.addBatch();

    conn.setAutoCommit(false);
    prep.executeBatch();
    conn.setAutoCommit(true);

    ResultSet rs = stat.executeQuery("select * from people;");
    while (rs.next()) {
      System.out.println("name = " + rs.getString("name"));
      System.out.println("job = " + rs.getString("occupation"));
    }
    rs.close();
    conn.close();
  }
}


2011년 8월 3일 수요일

JDBC Driver connection URL

/*JDBC Drivers from Microsoft MSSQL Server - jTds*/
url = "jdbc:jtds:sqlserver://host:port/dbname";
driver = "net.sourceforge.jtds.jdbc.Driver";

/*JDBC Drivers from Microsoft MSSQL 2000 */
url = "jdbc:microsoft:sqlserver://host:port";
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

/*JDBC Drivers from Microsoft MSSQL 2005 */
com.microsoft.sqlserver.jdbc.SQLServerDriver

/* MySQL With MM JDBC */
jdbc driver and url
driver = "org.gjt.mm.mysql.Driver";
url = "jdbc:mysql://localhost/dbname";

/*Sybase jconnect2.jar */
url = "jdbc:sybase:Tds:host:port";
driver = "com.sybase.jdbc2.SybDriver";

/*Oracle JDBC Thin Driver classes12.zip */
url = "jdbc:oracle:thin:@host:port:sid";
driver = "oracle.jdbc.driver.OracleDriver";

/*Oracle OCI Driver classes12.zip*/
url = "jdbc:oracle:thin:@host:port:sid";
driver = "oracle.jdbc.driver.OracleDriver";

/* Oracle 에서 Service Name 을 사용하는 경우 */
jdbc:oracle:thin:@//host_name:port_number/service_name
jdbc:oracle:thin:scott/tiger@//myhost:1521/myservicename

/* OpenBase OpenBaseJDBC.jar (download from www.openbase.com) */
url = "jdbcpenbase://host/database";
driver = "com.openbase.jdbc.ObDriver";

/* MySQL Connector/J from MySql (www.mysql.com)*/
url = "jdbc:mysql://host/database";
driver = "com.mysql.jdbc.Driver";

/*JSQLConnect from JDBC Drivers from Microsoft MSSQL 2000*/
url = "jdbc:microsoft:sqlserver://host:port";
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

/*DB2 Universal JDBC Driver from IBM
jdbc classes: db2java.zip */
url = "jdbc:db2:host";
driver = "COM.ibm.db2.jdbc.app.DB2Driver";

/*DB2 Universal JDBC Driver from IBM type4
jdbc classes: db2jcc.jar*/
driver = "com.ibm.db2.jcc.DB2Driver"
url = "jdbc:db2://{host}:50000/{database name}"

/*DB2 Universal JDBC Driver from IBM
jdbc classes: db2java.zip */
url = "jdbc:db2://{host}:{port}/{database name}";
driver = "COM.ibm.db2.jdbc.net.DB2Driver";

/*OpenBase5.1 jdbc driver for neusoft
jdbc class: openBASE.jar*/
url = "jdbc:OpenBASE:database"
url = "jdbc:OpenBASE://host/database"
url = "jdbc:OpenBASE://host:port/database"
url = "jdbc:OpenBASE://host:port/database;user=username;password=pwd"
driver = "com.neusoft.OpenBASE.Driver"
( Nov 18 2005, 01:07:47 AM GMT-08:00 ) Permalink Comments [0]

Sunday August 14, 2005
Test Statement for database

In some case, we will want to check database connection is really ok, below sql statement maybe used.

*for MySQL use: select 1

*for PostgreSQL use: select now().

*for Apache Derby use: values 1.

*for HSQL use: call now().

*for SAP DB (MySQL MaxDB) use: select count(*) from versions.

*for Oracle use: select * from dual.

*for Firebird use: select * from rdb$types.

*for InstantDB use: set date format "yyyy/mm/dd".

*for Interbase use: select * from rdb$types.

*for Microsoft SQL server 2000 use: select 1.

2011년 8월 2일 화요일

java 정규표현식 이용하기


허용된 확장자로 구성된 파일인지 검사 (JDK1.4 이상)




public boolean test(String str) {
String allowPattern = ".+\\.(gul|ppt|xls|hwp|jpg|zip|tif|alz|bmp|pdf)$";
boolean result = false;

        Pattern p = Pattern.compile(allowPattern);
        Matcher m = p.matcher(str);
        result = m.matches();

return result;
}

오라클에서 프로시저 호출

package org.javaya.test;

import java.sql.*;

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

public class RefCursor {

public static void main(String[] args) {
RefCursor vTest = new RefCursor();
vTest.prepareCall();
}

void prepareCall() {

Connection conn = null;
CallableStatement cstmt = null;
OracleCallableStatement ocstmt = null;

try {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORA";
String user = "scott";
String password = "tiger";

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection(url, user, password);

// Stored Procedure 를 호출하기 위해 JDBC Callable Statement를 사용 합니다
String query = null;

query = "{call PROCUDURE_NAME(?, ?,?)}";

cstmt = conn.prepareCall(query);

// 프로시져의 In Parameter로 SELECT문장을 넘깁니다.
int x = 1;
cstmt.setString(x++, "001");
cstmt.setString(x++, "2008");

// CallableStatement를 위한 REF CURSOR OUTPUT PARAMETER를
// OracleTypes.CURSOR로 등록합니다.
int outIndex = x++;
cstmt.registerOutParameter(outIndex, OracleTypes.CURSOR);

// CallableStatement를 실행합니다.
cstmt.execute();

// getCursor() method를 사용하기 위해 CallableStatement를
// OracleCallableStatement object로 바꿉니다.
ocstmt = (OracleCallableStatement) cstmt;

// OracleCallableStatement 의 getCursor() method를 사용해서 REF CURSOR를
// JDBC ResultSet variable 에 저장합니다.
ResultSet cursor = ocstmt.getCursor(outIndex);
//ResultSet cursor = ocstmt.executeQuery();

// 쿼리결과 empno, ename 출력
ResultSetMetaData rsmd = cursor.getMetaData();
int columnCount = rsmd.getColumnCount();

for (int i=0; i<columnCount; i++) {
System.out.print(rsmd.getColumnName(i+1) + "\t");
}
System.out.println("");

int count = 0;
while (cursor.next()) {
System.out.print(count++ + "==>\t");
for (int i=0; i<columnCount; i++) {
System.out.print(cursor.getString(i+1) + "\t");
}
System.out.println("");
}

System.out.println("done!");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
ocstmt.close();
cstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

파일명 목록, 내용목록을 받아 ZipStream을 생성하는 메소드

/**
* Zip 파일 생성
* @param os
* @param filenameList
* @param contentList
* @return
* @throws Exception
*/
public static ZipOutputStream makeZip(OutputStream os, List<String> filenameList, List<String> contentList) throws Exception {

ZipOutputStream jos = new ZipOutputStream(os);
long now = System.currentTimeMillis();
for (int i = 0; i < filenameList.size(); i++) {
String filename = filenameList.get(i);
String content = contentList.get(i);

ZipEntry zipAdd = new ZipEntry(filename);
zipAdd.setTime(now);
jos.putNextEntry(zipAdd);

byte[] b = content.getBytes("UTF-8");
jos.write(b, 0, b.length);
}
jos.close();

return jos;
}

JDBC connection strings


/*JDBC Drivers from Microsoft MSSQL Server - jTds*/
url = "jdbc:jtds:sqlserver://host:port/dbname";
driver = "net.sourceforge.jtds.jdbc.Driver";

/*JDBC Drivers from Microsoft MSSQL 2000 */
url = "jdbc:microsoft:sqlserver://host:port";
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

/* MySQL With MM JDBC */
jdbc driver and url
driver = "org.gjt.mm.mysql.Driver";
url = "jdbc:mysql://localhost/dbname";

/*Sybase jconnect2.jar */
url = "jdbc:sybase:Tds:host:port";
driver = "com.sybase.jdbc2.SybDriver";

/*Oracle JDBC Thin Driver classes12.zip */
url = "jdbc:oracle:thin:@host:port:sid";
driver = "oracle.jdbc.driver.OracleDriver";

/*Oracle OCI Driver classes12.zip*/
url = "jdbc:oracle:thin:@host:port:sid";
driver = "oracle.jdbc.driver.OracleDriver";

/* Oracle 에서 Service Name 을 사용하는 경우 */
jdbc:oracle:thin:@//host_name:port_number/service_name
jdbc:oracle:thin:scott/tiger@//myhost:1521/myservicename

/* OpenBase OpenBaseJDBC.jar (download from www.openbase.com) */
url = "jdbcpenbase://host/database";
driver = "com.openbase.jdbc.ObDriver";

/* MySQL Connector/J from MySql (www.mysql.com)*/
url = "jdbc:mysql://host/database";
driver = "com.mysql.jdbc.Driver";

/*JSQLConnect from JDBC Drivers from Microsoft MSSQL 2000*/
url = "jdbc:microsoft:sqlserver://host:port";
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

/*DB2 Universal JDBC Driver from IBM
jdbc classes: db2java.zip */
url = "jdbc:db2:host";
driver = "COM.ibm.db2.jdbc.app.DB2Driver";

/*DB2 Universal JDBC Driver from IBM type4
jdbc classes: db2jcc.jar*/
driver = "com.ibm.db2.jcc.DB2Driver"
url = "jdbc:db2://{host}:50000/{database name}"

/*DB2 Universal JDBC Driver from IBM
jdbc classes: db2java.zip */
url = "jdbc:db2://{host}:{port}/{database name}";
driver = "COM.ibm.db2.jdbc.net.DB2Driver";

/*OpenBase5.1 jdbc driver for neusoft
jdbc class: openBASE.jar*/
url = "jdbc:OpenBASE:database"
url = "jdbc:OpenBASE://host/database"
url = "jdbc:OpenBASE://host:port/database"
url = "jdbc:OpenBASE://host:port/database;user=username;password=pwd"
driver = "com.neusoft.OpenBASE.Driver"

MessageFormatter 사용하기

package org.javaya.test;

import java.text.MessageFormat;

public class MessageFormatTest {
public static void main(String[] args) {
String formatString = "ID={0} Password={1}";
MessageFormat formatter = new MessageFormat(formatString);
String[] data = {"id", "cash"};

String str = formatter.format(data);

System.out.println(str);
}
}

enum 사용하기 (JDK1.5 부터 지원)

package org.javaya.test;

public class EnumTest {
public static enum DATABASE_TYPE {Oracle, PostgreSQL, MSSQL, MySQL}

public static void main(String[] args) {
DATABASE_TYPE dt = null;
System.out.println(dt);

dt = DATABASE_TYPE.Oracle;
System.out.println(dt);

dt = DATABASE_TYPE.MSSQL;
System.out.println(dt);

dt = DATABASE_TYPE.PostgreSQL;
System.out.println(dt);

DATABASE_TYPE dbType = DATABASE_TYPE.Oracle;
if (dbType.equals(DATABASE_TYPE.Oracle))
System.out.println("ORACLE !!!");
else
System.out.println("ORACLE 아님 !!!");
}
}