티스토리 뷰

WEB2.0/프로그래밍

php에서 java사용하기

나를찾는아이 2010. 10. 20. 16:53
728x90
반응형


최근 php 기반의 프로젝트에서 java로 된 모듈을 사용해야할 일이 있어

php에서 java를 사용할수 있는 방법에 대해서 계속 구글링을 하며 관련 자료들을 뒤졌습니다.


좀 더 구체적인 상황을 설명해드리자면

php 기반의 웹어플리케이션에 java로 된 암호화모듈을 사용해야하는 일이었습니다.


java 암호화 모듈은 메소스 사용시

파라메터로 암호화할 string을 던져주면 암호화된 string을 return 해주는 간단한 object였으나,

그 암호화 방식에 대한 정보가 없어 php로 같은 암호화알고리즘을 만들어 사용할 수가 없어

해당 java 모듈을 사용해야만 했습니다.



그래서 오랜시간 자료를 뒤져가면서 레퍼런스를 찾아보며 이것저것 시도해보았으나

LAMP(Linux, apache, mysql, php)환경에서 적용할수 있는 방법은 이 방법 하나밖에 나오지 않더군요.


http://php-java-bridge.sourceforge.net/pjb/


php java bridge라고 불리는 유명한 php와 java를 연결해주는 모듈입니다.

php에서 java를, 반대로 java에서 php를 사용하는 것도 가능합니다.



<?php require_once("http://localhost:8080/ExcelCreator/java/Java.inc");

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=downloaded.xls");

// create a 50x40 excel sheet and return it to the client
$workbook = new java("org.apache.poi.hssf.usermodel.HSSFWorkbook");
$sheet = $workbook->createSheet("new sheet");

for($y=0; $y<40; $y++) {
  $row = $sheet->createRow($y);
  for($x=0; $x<50; $x++) {
    $cell = $row->createCell($x);
    $cell->setCellValue("cell $x/$y");
  }
}

// create and return the excel sheet to the client
$memoryStream = new java("java.io.ByteArrayOutputStream");
$workbook->write($memoryStream);
$memoryStream->close();
echo java_values($memoryStream->toByteArray());
?>




java모듈을 사용한 샘플 예제입니다.

php도 oop적인 코드가 생성가능하니 소스코드는 아마 크게 생소하지는 않으실 겁니다.



가장 최신 버전의 php java bridge는 (이전 버전의 php java bridge는 특정 모듈을 설치하는 것으로 어찌보면 비교적 간단히 사용가능한 방법이었던것 같은데 지금은 해당 버전의 파일을 구할수 없더군요.) 어떤 파일도 인스톨 하지 않으셔도 됩니다. 별도의 익스텐션을 찾으시지 않으셔도 됩니다.

단지 홈페이지에 있는 JavaBridge.war 파일을 deploy 하여 실행하면 됩니다.

설치방법은 아마 어느정도 삽질이 필요한 부분이니 일단 방법을 설명해드리겠습니다.


php java bridge의 원리는 대충 다음과 같습니다.

서버에 java를 구동시킬수 있는 모든 조건을 갖춰야 합니다.

즉 JDK를 설치하셔야 하며, tomcat 또는 다른 WAS를 설치하셔야 합니다.

그리고 WAS를 8080포트로 실행합니다.


즉 하나의 웹서버에서는 80번 포트의 웹서비스가 실행됨과 동시에

8080번 포트로 WAS가 실행되고 있는 것입니다.


그리고 해당 홈페이지에서 다운받은 JavaBridge.war 파일을 deploy 하면

http://localhost:8080/JavaBridge

이러한 path에 접근이 가능하게 됩니다.


생성된 JavaBridge 폴더를 php에서 사용하고 있는 web ROOT 폴더에 심볼릭링크를 걸어줍니다.


그렇게되면

http://yourHost.com/JavaBridge

이렇게 접속이 가능해지겠죠?



이 폴더에 접속이 가능하시다면 다음부터는 여러분이 사용하실 java모듈을 해당 폴더에 넣고

php문법으로 사용하시면 됩니다.



제가 비교적 쉽게 기술했지만 설치 중에 여러가지 버그들을 만나실지도 모릅니다.

이부분은 너무 문제가 다양하니 해당 에러로 구글링을 시도해보세요.




php에서 java를 사용해야한다는 어찌보면 참 괜한 일이기도 했지만

나름 의미있기도한 작업이었습니다.


즐거운 코딩하세요 유후~!
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함