반응형
출처: http://www.ibm.com/developerworks/kr/xml/standards/x-soapspec.html
 난이도 : 중급

필자: W3C

2007 년 6 월 26 일

SOAP 프로토콜에서는, 인터넷 프로토콜로 연결된 시스템들간 통신에 XML을 사용할 수 있습니다. XML 정보에 표준 인벨롭(envelope)을 제공하여 네트워크 메시지들을 통해 전송될 수 있도록 하고, 메시지 바디(body)에 대한 규약도 제공합니다. SOAP의 역사를 이해하고, 웹 서비스, 서비스 지향 아키텍처(SOA), Representational State Transfer (REST)와의 관계를 이해해 봅시다.

SOAP [W3C Recommendation]은 인터넷 프로토콜을 사용하여 연결되어 있는 시스템들 간 통신에 XML을 사용하는 프로토콜이다. 많은 사람들은 SOAP을 XML 웹 서비스의 토대, XML 데이터 포맷을 사용하여 연결된 시스템간 인터랙션을 관리 및 구성하는 기술, 인터넷 통신 프로토콜로 생각하고 있다. SOAP은 원래 IBM®을 비롯한 다양한 기업에서 모인 사람들에 의해 개발되었다. 견고한 아키텍처와 상용 지원을 갖추었던 초기 XML 메시징과 유사한 기능을 제공했기 때문에 빠르게 대중화되었다. World Wide Web Consortium (W3C)으로 넘어간 SOAP의 개발은 SOAP 1.2까지 탄생시켰고, 많은 아키텍처 향상을 이룩했지만, 이에 못지않게 많은 논란의 대상이 되었다. SOAP 프로토콜은 가상 XML 페이로드를 포함하여 XML Envelope 포맷을 정의하고 있다. (실제 SOAP 메시지의 페이로드가 XML의 완전한 기능을 사용하지 못한다는 사실은 상당한 논쟁거리가 된다.)

XML 웹 서비스는 서비스 지향 아키텍처(SOA)라고 하는 일반적인 개념과 밀접하게 연관되어 있지만, 이 중 어떤 개념들도 SOAP을 대체하지는 못한다. 많은 사람들은 HTTP를 통해서 직접 미가공 XML 문서들을 교환한다는 개념을 옹호하고 있다. 이는 Representational State Transfer (REST)가 추구하는 방식이기도 하다. REST는 Roy Fielding이라고 하는 아키텍트가 명명한 웹의 아키텍처 스타일이다. REST 스타일의 웹 서비스 옹호자는 SOAP은 복잡하고, XML 페이로드를 방해하고, 웹의 강점을 충분히 활용하지 못한다고 지적하고 있다. SOAP 옹호론자들은 SOAP의 원격 프로시저 호출(RPC) 루트에서 document-literal 스타일의 SOAP으로 강조를 옮김으로써 이러한 문제를 해결해왔다. RPC 스타일에서, 전송되는 데이터는 특별한 XML 페이로드 포맷(SOAP encoding)에 개별 데이터 유형으로 마샬링 된다. document-literal 스타일에서, XML 페이로드는 보다 설명적이고 가독성 있는 자연스러운 XML 포맷으로 구성된다.

SOAP 조직

SOAP과 관련하여 많은 표준들이 만들어지고 있지만, 이 글에서는 다루지 않겠다. 다음은 SOAP 관련 표준과 관련한 리소스들이다.

SOAP의 전신에 해당하는 XML Remote Procedure Calls (XML-RPC) [community specification]는 여전히 광범위하게 사용되고 있다. XML-RPC는 XML로 인코딩 되고 HTTP를 통해 통신하는 프로시저 호출을 정의한다. 단순함(전체 스팩은 불과 10페이지 밖에 안된다.)과 대부분의 언어와 많은 애플리케이션 프레임웍이 표준 또는 쉽게 사용할 수 있는 XML RPC 구현을 갖고 있다는 사실 때문에 여전히 대중성을 확보하고 있다. 원시적인 데이터 타이핑과 문자 인코딩 지원의 부족이라는 치명적인 단점이 있다.


아는 지인이 SOAP 과 ebXML에 대한 질문을 해왔다. 현재 일하고 있는 곳에서 사용하고 있지만
개념을 확실히 알고 사용하는 것이 아니였기에 지인에게 정확한 답변을 해주지 못하였다.
이에 개념을 확실히 정리해야 겠다는 생각이 들어 자료를 정리해본다.
현재 하고 있는 일에 관한 많은 부분에 대해서 개념은 없고 사용만 하는 부분이 많다.
좀 더 하는 일에 대해 개념을 정립하고 그에 관련된 정보를 모아서 정리해야겠다.
반응형


복싱화는 에버라스트 껄로 샀었고 핸드랩 은 전에 쓰던걸 계속쓰고

백글러브는 체육관에 있는 공용을 썼는데 이번에 장만했다..

기타 다른 좋은 브랜드가 많이 있었지만 가미껄 선택했다. ㅎㅎ

백글러브도 샀고 좀 더 버닝해서 운동해야 ㅎㅎ 그 값어치를 하겠지..ㅋ

확실히 운동을 시작하니 몸에 변화가 느껴지긴 한다.. 항상 뻐근하고 멍자국도 좀 있고 ㅎㅎ
반응형
우분투에 버전관리 서버를 설치하도록 하자.

cvs 와 svn 중에서 고민하다 cvs는 계속 사용해 왔기에 svn을 설치하기로 했다.

설치와 사용 방법에는 여러가지 케이스가 있지만 svn+ssh 프로토콜을 사용하기로 한다.

1. 서브버전 설치  
# apt-get install subversion

2. 사용자 그룹 설정
# groupadd subversion

3. 그룹에 사용자 추가(guda,twelo 계정을 그룹에 추가했다.)
# vi /etc/group
subversion:x:1005:guda,twelo

4. 서브버전에서 사용할 저장소 생성
# mkdir /home/project

저장소를 버클리 디비 방식으로 만들건지 파일 방식으로 만들건지 선택하자.
난 그냥 버클리 디비 방식으로 생성하기로 했다. 그리고 그룹이 접근할수 있도록 권한 설정

# cd /home/project
# svnadmin create --fs-type bdb Gsource
# chgrp -R subversion Gsource
# chmod -R g+w Gsource

이게 끝이다.. 이제 서브버전에 접속 하면된다.
svn+ssh://guda@ip-address/home/project/Gsource  

부족한 부분이나 다른 상세한 방법에 대해 알고 싶다면 아래 링크를 참조
http://wiki.kldp.org/wiki.php/Subversion-HOWTO


반응형

우분투 서버 부팅시에 실행시킬 스크립트를 등록 하는 두가지 방법
1, /etc/rc.Boot  에 실행권한을 준 스크립트를 생성
2. /etc/init.d 에 실행권한을 준 스크립트를 생성하고 update-rc.d 로 등록

런레벨
 0  시스템정지
 1  단일 사용자 모드
 2~5  다중 사용자 모드
 6  시스템 재가동

기본 런레벨은 '2'를 기본으로 시작된다.

새로 등록 (ex. 99는 부팅 시 올라오는 순서, 90은 꺼질 때)
update-rc.d test_server defaults 99 90

이전에 등록됐던 데몬을 지운다.
update-rc.d -f  test_server remove

update-rc.d명령은 /etc/init.d/와 rcN.d 디렉토리의 파일 사이에 연결을 만들어 준다.
그 연결 파일의 명칭은 'S','K'로 시작되고 그 뒤로 두자리 숫자와 등록된 스크립트 파일명으로 구성.
각 rcN.d 는 N에 해당하는 런레벨으로 실행될때 'S'로 시작되는 스크립트들이 실행되고
'K'는 해당 런레벨 N을 빠져나올때 실행되게 된다. 'S','K' 뒤에 숫자는 실행 순서를 나타내게 된다.

반응형
블로그를 시작하고 도메인을 달아 놓은 지 벌써 3년째가 되어간다.

그리고 도메인 연장시 마다 썻던 이 글도 3번째가 되어가고 어느덧 오랜 시간 함께 해온

pmguda.com 에 대한 애틋함이랄까(?) 마음에 자리잡게 된것은 아닐까 하는 생각도 든다.

원하는 도메인이 있었지만 사용하고 있는 사람이 있어 포기하고 도메인이 나올때까지

임시로 사용하자고 했던 도메인이 벌써 3번째 연장을 한것이다.





연장신청 기념 스샷이다. 언제까지 이 도메인을 달고 블로그를 계속할지 모르겠다.
내 꿈을 담고 포부를 담고 희망을 담았던 도메인.. 그리고 그 속에 "내 남자의 길~1"을 담았다.
연장 신청을 하고 나니 감회가 새롭다.

반응형


몇가지 동영상을 찾아 봤지만 왠지 사뿐사뿐한게 보기 좋은것 같네요.
자세 좀 보고 익힐려고 퍼왔습니다. ^^
반응형

웹호스팅 환경을 구축하기 위해서는 DNS 서버를 구축해야 하나
사용자 계정을 이용한 JSP서버까지만 구축할 생각이다.
http://ip/~account 식의 도메인이 될것이다.

1. user 생성과 아파치 설정 변경
-- /etc/skel 은 유저 생성시 유저홈에 기본적으로 생성되는 뼈대 디렉토리와 파일 생성..
# cd /etc/skel
# mkdir public_html
# mkdir public_html/WEB-INF
# vi public_html/index.jsp
<HTML>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>GUDA'S SERVER</title>
</head>

 <BODY>
  <h1><h1><% out.print("Welcom GUDA'S SERVER"); %></h1><br /></h1>
  <h1> http://www.pmguda.com <br /></h1>
  <h1> ganziguda@gmail.com<br /></h1>

 </BODY>
</HTML>
2. 사용자 계정 생성 및 비번 설정
# useradd guda
# passwd guda
Changing password for user guda.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# chmod -R 755 /home/guda
# cd /home/guda/public_html/
# cp index.jsp index.html
# vi index.php
<?='this is test'?>

3. 아파치에서 사용자계정을 사용해서 사용자 디렉토리에 접근할수 있도록 설정
--Include문앞에 주석을 제거한다.

# vi /usr/local/apache2/conf/httpd.conf

Include conf/extra/httpd-userdir.conf


4. 아파치 서버를 재시작한다.
# /usr/local/apache2/bin/httpd -k restart

각 파일들을 웹브라우져로 요청해 보면 php 파일은 정상적으로 출력되는데


jsp, html 파일은 찾지 못하는 것을 볼수가 있다.

PHP 소스를 읽는 것은 httpd.conf 에서
#JkMount /* loadbalancer  이렇게 주석처리 해줫기 때문이다.

5. jsp와 html을 정상적으로 읽도록 하기 위해서는 /usr/local/tomcat/conf/server.xml 을 수정
# vi /usr/local/tomcat/conf/server.xml

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false"> 
     
<Context path="/~guda" docBase="/home/guda/public_html" debug="0" reloadable="true" />

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->

      </Host>
    </Engine>
  </Service>
</Server>


6. 서버를 재시작 하고 확인
# /usr/local/apache2/bin/httpd -k restart
# /usr/local/tomcat/bin/catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/local/jdk
# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/local/jdk

--jsp 파일은 정상 출력되지만 html코드내의 <% %> jsp 코드는 먹히지 않는다.



위에 페이지는 정상적으로 잘 뜨나 한글이 깨니는 것을 볼수 있다.
일단 JSP에서 한글이 깨져 나오는 것은 인코딩 문제이다. 파일 상단에 이렇게 넣어주자.
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
리눅스 서버 자체가 utf-8로 저장을 하니 utf-8로 불러와서 utf-8로 뿌려주게 하면 된다.

이제 오라클 연동 테스트를 하다보면 DB에서 값을 불러오는데 한글이 깨진다.
Character Set이 맞지 않아서 생긴 문제이다.
일단 오라클에 접속해 다음과 같이 변경해 주고 오라클을 재시작 하도록 하자.

update props$ set VALUE$='KO16KSC5601' where name='NLS_CHARACTERSET';

그리고 앞서 아파치 오라클 연동시 설정해줬던 밑 부분에
# vi /usr/local/apache2/bin/envvars

export ORACLE_HOME=/oracle/11g
export ORACLE_SID=oracle
LD_LIBRARY_PATH="/usr/local/httpd/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
--이 아랫부분에 추가해 주도록 하자.
export NLS_LANG=KOREAN_KOREA.KO16KSC5601

이로써 글자가 깨지는 문제는 해결이 될것이다.

그리고 여기까지만 서버 셋팅을 하도록 하겠다. 도메인을 주고 사용자 계정에 도메인을 붙이는
작업도 있지만 DNS 서버를 구축할 예정이 없기 때문에 여기서 완료하도록 하겠다.
글을 작성하면서 수정해야 할 부분이 있거나 안되거나 추가할 부분이 있으면 댓글을 달아주는 센스!!
블로그에 글 하나 작성하는데 너무나 많은 시간이 걸리는것 같다. ㅠㅠ


반응형

앞서 우분투에 Apache + PHP + Oracle 연동설치까지 하였다. 
JSP 연동을 위해 Tomcat 설치 후 연동 과정에 대해서 정리하도록 하겠다.

우선 Tomcat을 구동하기 위해서는 JDK가 설치가 되어 있어야 한다.
우분투 10.04에는 아마도 OpenJDK가 설치 되어 있을것이다. 이를 사용해도 무방하나
본인은 Sun JDK를 오랫동안 사용해 왔으므로 Sun JDK를 설치하도록 하겠다.

우분투 10.04에서는 # apt-get install sun-java6-jdk 하면 설치가 되지 않는다.
source list 에 Sun JDK 1.6 이 포함 되어 있지 않는것 같다.

Sun JDK 1.6 설치

1. Source List에 추가
# add-apt-repository "deb http://archive.canonical.com/ lucid partner"

2. Source List 업데이트
# apt-get update

3. Sun JDK 1.6 설치 
# apt-get install sun-java6-jdk

4. 설치 완료 확인
# javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
....  이런 식으로 출력되면 정상설치 된것이다.

TOMCAT 설치
tomcat 7.0.0 을 다운 받도록 하자.
http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.0-beta/bin/apache-tomcat-7.0.0.tar.gz

이전 설치 과정을 잘 따라왔다면 이후 설치과정중 명령어들이 무슨 명령어인지 알것이다.
# cd /usr/local/src
# wget http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.0-beta/bin/apache-tomcat-7.0.0.tar.gz
# tar xvzf apache-tomcat-7.0.0.tar.gz
# mv apache-tomcat-7.0.0 /usr/local/tomcat
# cd /usr/local

톰캣 관련 환경변수를 셋팅해 준다. /etc/profile 파일 마지막에 추가
# vi /etc/profile
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin


# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/local/jdk

톰캣 구동이 완료 되었다. 로컬에서 http://localhost:8080 으로 접속해보자.


위와 같은 화면이 뜨면 정상설치가 된것이다. 여기서 뒤에 8080은 톰캣포트이다.
여기서 더 나아가 아파치와 톰캣의 연동 부분까지 진행해 나가도록 하겠다.

APACHE-TOMCAT CONNECTOR
1. 다운로드
# cd /usr/local/src
# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/source/jk-1.2.30/tomcat-connectors-1.2.30-src.tar.gz 
2. 압축 해제
# tar xvzf tomcat-connectors-1.2.30-src.tar.gz
# cd tomcat-connectors-1.2.30-src
# cd native/
3. 컴파일 및 설치
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make && make install
4. 설치 확인
# ls /usr/local/apache2/modules/mod_jk.so
/usr/local/apache2/modules/mod_jk.so  <== 파일이 존재하면 정상 설치 완료.

5. 아파치와 톰캣 연동 설정을 위하여 httpd.conf 와 workers.properties 파일을 수정 생성한다.
# vi /usr/local/apache2/conf/httpd.conf

LoadModule jk_module          modules/mod_jk.so
#Tomcat-connector
JkWorkersFile conf/workers.properties
JkLogFile logs/jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %y]"
JkMount /*.jsp loadbalancer
JkMount /*.do loadbalancer
JkMount /*.html loadbalancer
JkMount /servlet/* loadbalancer
JkMount /* loadbalancer
JkMount /*.gif loadbalancer

#Load Module 맨뒤에 위와같이 추가한다.

6. workers.properties파일을 새로 생성한다.
# vi /usr/local/apache2/conf/workers.properties
worker.list=loadbalancer
worker.tomcat1.type=ajp13
worker.tomcat1.host=127.0.0.1
worker.tomcat1.port=8008
worker.tomcat1.lbfactor=1
worker.tomcat2.type=ajp13
worker.tomcat2.host=127.0.0.1
worker.tomcat2.port=8009
worker.tomcat2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1,tomcat2

7. 아파치와 톰캣을 재시동하고 8080포트를 빼고 접속한다.
-- 아파치와 톰캣 재시동..
# /usr/local/apache2/bin/apachectl restart
# /usr/local/tomcat/bin/catalina.sh stop  
# /usr/local/tomcat/bin/catalina.sh start 

http://localhost  로 접속


아파치와 톰캣의 연동이 정상적으로 완료되었다.
이제 톰캣이 자동 실행 되도록 셋팅하도록 하자.
/etc/init.d 에서   tomcat 파일을 생성

# vi /etc/init.d/tomcat


위와 같이 작성하고 실행 권한을 주도록 하자

내용작성후 실행권한을 부여하고 시작프로세스에 등록한다.  재시작하면 자동 실행 된다.

하지만 이전에 설치한 PHP는 인식하지 못하고 해당 페이지를 다운로드 받게 된다.
이 부분에 대한 셋팅에 방법에 대해서 기술 하도록 하겠다.

앞서 추가한 httpd.conf 에 추가한 부분에서
#JkMount /* loadbalancer
이 부분을 주석처리(앞에 #) 하거나 삭제하고 재가동 하면 JkMount부분에서 지정하지 않은 확장자는
모두 본래의 아파치 디렉토리에서 정상적으로 읽게 된다.
이정도에서 더 나아가 웹호스팅 처럼 웹서버를 활용하고자 한다면 더 추가해야 할 부분이 있다.
그냥 단일 웹서버로 사용하고자 한다면 여기까지 설정하고 사용하길 바란다.

서버에서 각 계정들에게 도메인을 개인 도메인을 할당하고 사용할수 있게 해보자.
이부분에 대한 포스팅도 다음으로 넘어가도록 하겠다 글이 너무 길어지기 때문에.





+ Recent posts