▶이동
  • 상구너 닷컴 블로그를 방문하신 여러분을 환영합니다 :)
  • 스팸 정책에 의해 일부 덧글·방명록차단될 수 있습니다.
[구너 플레이어] 15.08 버전,


순수하게 본인의 필요에 의해 만들어진 html5 기반의 음악 플레이어.

브라우저상에서 실행이되며 PHP 와 Http 서버가 필요함(디렉토리 인덱스 체크)

mp3 와 ogg 를 지원하며 소스의 51번 라인 에 wav 등을 추가할 수 있음.





실행화면, 크기 자동조절.

 



소스상 표시문제로 테그를 -- 로 치환함 



사용상 모든 브라우저를 지원하지만 mp3 파일등의 음원은 직접 구해서

플레이어가 있는 디렉터리에 함께 넣어주고 브라우저에서 주소를 열면 된다.



9ouPlayer.zip



문의는 댓글로.



'Develop' 카테고리의 다른 글

구너갤러리 15.11.2  (0) 2015.11.16
구너갤러리 15.11  (0) 2015.11.04
구너 플레이어 15.11  (1) 2015.11.04
베지에 곡선 (Bezier Curve)  (1) 2015.09.04
PHP html5 css3 음악 플레이어.  (0) 2014.10.18

Redhat JBoss mysql Datasource 설정하기

Study/WAS 상구너(sanguneo) 2015. 4. 14. 13:52

JBoss 서버에 데이터소스를 설정하는 내용을 담은 글들이 매우 많으나, 사실상 적용이 안되는 경우가 많았다.

톰캣처럼 컨텍스트 추가하고 읽으면 바로 사용할 수 있는 방법은 없다.


JBoss 에서 데이터소스를 사용하는 순서는 다음과 같다.


1. 드라이버 모듈 추가

2. 데이터소스 드라이버 등록

3. 데이터소스 추가

4. 데이터소스 매핑 jboss-web.xml



1. 드라이버 모듈 추가

드라이버 모듈은 modules 에 디렉토리를 생성하고 module.xml 을 생성하여 넣는 방법이 대부분 소개되어있다. 그러나 간혹 jboss 에서 인식이 되지 않는 경우가 발생한다. 모듈이 없거나 존재하지 않는다는 경고가 발생한다. 공백이나 양식, 문법등의 문제겠지만 정확히 어떤것이 문제인지는 확인할 수 없었다.


여기서는 jboss-cli 를 이용한다. jbosscli 실행하여 해당 서버콘솔에 접속하고 다음과 같이 입력한다.


module add --name=com.mysql --resources={mysql connector jar file 경로} --dependencies=javax.api,javax.transaction.api


그러면 자동으로 modules 아래에 com 폴더 아래에 새로운 mysql 모듈이 등록이된다.


2. 데이터소스 드라이버 등록


/subsystem=datasources/jdbc-driver=mysql:add(driver-module-name=com.mysql,driver-name=mysql,driver-class-name=com.mysql.jdbc.Driver)


위와같이 입력하면 데이터소스드라이버가 등록이 된다.


3. 데이터소스 등록

standalone/configuration/standalone.xml 을 편집하거나 management Web 을 이용한다. 

필자의 경우 management Web 을 이용하였으나 standalone.xml 을 편집하여 등록하는 방법을 적어본다.



 
 
 jdbc:mysql://localhost:3306/DB명.....파라미터
 com.mysql.jdbc.Driver
 com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
 mysql
 
  2
  30
 
 
  아이디
  패스워드
 
 
  false
  false
 
 
  true
 
 

위처럼 소스를 삽입한다.


4. war 파일에 web.xml 과 함께 jboss-web.xml 을 추가한다.




  /{context path}
  
    jdbc/jndi별명
    javax.sql.DataSource
    java:/jdbc/jndi별명
    Container
  






위와같이 설정후 context lookup 시 comp/env 를 통해 lookup 하는것은 제외하도록 한다.


war 를 배포하고 배포경로를 통해 확인한다.





Bcel 을 처음 다룰 당시에 만들었던 간단한 매개변수 출력하는 BCEL transform이다.

상당히 다듬어지지않은 막코드라서 감안해서 볼 필요가있다.


핵심부분은 밑줄과 주석을 달겠다.


이전글(http://blog.sanguneo.com/21에서 premain 을 이용한 javaagent 사용법은 간략하게 배웠는데. 

BCEL을 여기에 접목시킨다는것은 조금 고차원적인 접근이 필요하다.(필자의 생각)


우선적으로 소스를 펼치기에 앞서 이론설명을 하자면 자바의 .class 파일은 완전하계 기계어(?)로 번역된것이 아닌,

그렇다고 소스형태도아닌 그 중간어딘가의 형태로 볼수있다. 

javac 명령어를 실행하면 소스파일을 java컴파일하면 class 파일로 뱉어내게되는데, 이 class파일이 ByteCode의 목적집합코드인셈이다.(?)


길게 이야기할거없이 일단 class파일은 바이트코드로 되어있다고 보면 된다.


웹상의 대부분의 자료들(BCEL에 관련해서만) 은 BCEL을 이용한 정적인 BCI 기술을 보여준다. 

정적인 BCI기술이라함은 class 파일화된 바이트코드를 다루는것이라 하겠다.


하지만! 이 정적인 BCI기술은 엄청난 한계가있는데, 

상용프로그램에대한 라이센스문제(수정불가등의 조항), 묶여있는 클래스군 혹은 시스템클래스 에대한문제(rt.jar 등) 이 그것이다.


그렇다면 실시간으로 무엇을 어떻게 불러와서 사용할수 있을고 하니. 자바에서 기본적으로 Transform 을 지원한다.(since jdk1.5)

여기서 사용할것은 ClassFileTransformer 이다.


우선 클래스파일 트랜스포머 메소드는 아래처럼 implements 로 얻어와서 정의하여 사용한다.


주의) 소스가 동작하지않을 수 있음. 버그있으면 피드백 바랍니다. 원본 코드를 자꾸 수정해서 아래코드는 기억을 더듬어 작성했습니다.



즉, 위에서 사용한 방식을 요약하면

클래스 파싱->메소드 검사후 조건검색->새 메소드인스트럭션 생성->인스트럭션에 아규먼트출력절차 추가->원본 인스트럭션 추가->생성된 인스트럭션을 원본 메소드에 교체->메소드를 클래스젠에 추가->클래스젠으로부터 클래스를 받아 바이트코드로 출력 하게된다.


이를 지칭하여

BCEL on fly, dynamic BCEL 이라고 부르기도 한다.




'Study > BCI&BCEL&ASM' 카테고리의 다른 글

BCEL 중요용어 및 사용법 간단 소개.  (0) 2015.01.12
bcel 6 다운로드  (0) 2015.01.12
BCI 기술과 BCEL  (0) 2015.01.12
ASM 으로 바이트코드 변경하기.  (0) 2014.08.21
BCEL 그나마 나은 참고자료..  (0) 2014.08.04

bcel 6 다운로드

Study/BCI&BCEL&ASM 상구너(sanguneo) 2015. 1. 12. 15:56

최신 개발버전 스냅샷 위치는 다음과같음

http://repository.apache.org/content/groups/snapshots/org/apache/bcel/bcel/6.0-SNAPSHOT/