2007년 6월 21일 목요일

ppm이 실행되지 않을때

C:\Documents and Settings\재관>ppm
ppm gui failed: DBI connect('dbname=C:\DOCUME~1\재관\LOCALS~1\APPLIC~1/ActiveSta
te/ActivePerl/820/ppm-MSWin32-x86-multi-thread-5_8.db','',...) failed: unable to
 open database file(1)

위와 같은 이유로 ppm이 실행되지 않을 경우
set ACTIVEPERL_PPM_HOME=c:\perl\temp


6.21
흠 중간에 한글이 들어갈 경우 ppm은 path를 인식하지 못한다.
계정을 새로 만들어서 사용해야 한다...흠..제길..

[linux] 네임 서버 변경하려고 할때..

/etc/resolv.conf 파일 수정

 nameserver 168.126.63.1
 nameserver 168.126.63.2

그냥 변경 하고 nslookup실행해 보면

# nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
>
>
>
> www.auction.co.kr
Server:         168.126.63.1
Address:        168.126.63.1#53

Non-authoritative answer:
Name:   www.auction.co.kr
Address: 211.233.17.11

이런식으로 출력 됨 ㅋㅋ

2007년 6월 20일 수요일

핸드폰 세일즈맨의 오페라

찌릿하군..
심사위원이 당신은 뭐하러 나왔냐? 라고 물었을때..
그는 오페라를 하겠다고 대답한다.
심사위원들의 눈엔 당황스러움이..

하지만 어느샌가 눈물을 ...

2007년 6월 18일 월요일

슬럼프

빠샤..
요즘 슬럼픈가? 일이 손에 잡히질 않네..희안하네 어째야 할까?
회사에서 책상에 앉아만 있는다고 일이 되는건 아닐텐데.

슬럼프를 어찌 극복해야 할까? 물론 할 일은 분명하다. 하지만 느릿느릿..굼벵이 마냥.
여름이라 그런가? 냉수 한 잔 마시면 회복 되면 좋으련만..ㅋㅋ

CPAN 모듈에 대한 설정

http://cpan.uwinnipeg.ca/htdocs/CPAN/CPAN.html

Saves all config variables to the current config file (CPAN/Config.pm or CPAN/MyConfig.pm that was loaded at start). 에 설정이 저장된다.
위치: /usr/local/lib/perl5/5.8.8/CPAN 밑에 Config.pm이 저장되어 있다.

오류 메시지

perl을 위한 wsdl파일 자동 생성기

내용인 즉슨
perl은 환상적인 언어라 자동으로 타입을 결정할 수 있기 때문에 SOAP Client를 작성함에 있어서도 환상적이다. 하지만 java, c++, vb등의 언어는 서버와 커뮤니케이션 하기 위해서는 WSDL파일이 있어야만 한다. WSDL파일은 서버와 상호 호환이 가능한 모든 데이터 구조가 정의 되어 있다.

그러므로 PERL로 생성한 웹 서비스도 다른 서비스를 지원하기 위해선 WSDL을 서비스 해야 한다.

http://dag.wieers.com/rpm/packages/perl-WSDL-Generator/

Generate wsdl file automagically.
You know folks out there who use another language than Perl (huh?) and you want to release a SOAP server for them

1/ that's very kind of you 2/ you need to generate a wsdl file 3/ this module can help Because Perl is dynamically typed, it is a fantastic language to write SOAP clients, but that makes perl not-so-easy to use as SOAP server queried by statically typed languages such as Delphi, Java, C++, VB... These languages need a WSDL file to communicate with your server. The WSDL file contains all the data structure definition necessary to interact with the server. It contains also the namespace and URL as well.

Latest release: 0.02-1.2

Website: http://search.cpan.org/dist/WSDL-Generator/
License: Artistic
Group: Applications/CPAN
Upstream Contact: Pierre Denis <pdenis at fotango dot com>
RPM Authority: dries :: Dries Verachtert <dries at ulyssis dot org>

perl에서 web service읭 wsdl사용

use SOAP::Lite;

$a = 45;
$b = 55;
print "Adding values ", $a, " and ", $b, "\n";
print SOAP::Lite
    -> service('file://c:/voices/perl/service1.wsdl')
    -> Add($a, $b);

#===============================================

파일일 경우엔 위와 같이 사용
http일 경우엔 http://host/voices/perl/service1.wsdl
로 사용한다.

2007년 6월 15일 금요일

서브루틴과 메소드의 차이

차이가 있지..
서브루틴은
AA::sub(); 의 형식

메소드는
$AA->method( $param ); 의 형식

메소드는 객체지향에서 사용하는 것이라 생각하면 된다.

클래스 내부를 살펴보면

package AA;

sub method
{
        my ( $self ) = shift; 또는 my( $self, @args ) = @_;
        ....
}

메소드의 경우 가장 첫 번째 파라미터는 객체를 가르키는 레퍼런스가 된다.

Web Service Track

1. XML Web Service의 소개

  -분산 어플리케이션의 진화

  -웹 서비스관련 기술 스택

  -웹 서비스 시나리오


2. XML Web Service 아키텍쳐

  -웹 서비스 아키텍쳐 / 서비스 지향 아키텍쳐

  -웹 서비스 아키텍쳐 구성의 역할

  -웹 서비스 프로그래밍 모델


3. 웹 서비스를 이루는 기술소개

  -HTTP 기본

  -XML 기본

  -SOAP

  -.NET Framework에서 SOAP 사용하기


4. Consuming XML Web Services

  -WSDL Document

  -Web Service Discovery

  -Web Service Proxies

  -웹 서비스 Consumer 제작하기


5. 간단한 XML Web Service 구현하기

  -Web Service Project 생성

  -Web Service Method 구현

  -상태관리

  -디버깅


6. XML Web Service의 출판 및 배포

  -웹 서비스 배포

  -UDDI의 소개

  -웹 서비스 출판

  -UDDI 사용하기


7. XML Web Service 보안

  -보안의 소개

  -SOAP 해더를 이용한 인증

  -Role-Based Security

  -Code Access Security

  -Encryption


8. XML Web Service 디자인

  -Performance

  -Reliability

  -Versioning


9. Global XML Web Services 아키텍쳐

  -GXA

  -Security & Licensing


2007년 6월 14일 목요일

XML-RPC와 SOAP Web Service

XML-RPC is a protocol that allows programs of different languages on different machines to easily talk to each other. By sending a well-defined XML document over unadorned HTTP, a client program can make a remote procedure call to a server. The server processes the request and wraps its response in another well-defined XML document that is sent back to the client over that same HTTP connection.

XML-RPC는 이종 머신상의 이종 언어들이 각자 쉽게 데이터를 주고 받을 수 있게 도와주는 일종의 프로토콜이다. 잘 정의된 XML문서를 HTTP를 통해 보내고 클라이언트는 서버의 프로시져를 호출 할 수 있다. 서버는 클라이언트의 요청에 대해 마찬가지로 잘 정의된 XML문서로 답변한다.

 

Because procedure requests and responses are all in XML, each end of the RPC connection need not be written in the same language or even for the same platforms

프로시져의 호출과 답변이 XML 이루어 지기 때문에 같은 환경과 언어가 필요하지 않다.

 

Clients code to an agreed-upon API that a Web service listener implements. Either side of the API fence can change without affecting the other side. In this way, Web services in general, and XML-RPC in particular, can help break down the Berlin Wall of incompatible OS platforms and make language-agnostic software network components.

클라이언트의 서비스Api 지원한다. Xml-RPC Web Service 일반적인 방법은 Web Service이고 XML-RPC 특별한 방법이다.

 

Although less famous than its younger sibling SOAP, XML-RPC is a simple and easy tool that can help you integrate even the most uncommunicative of systems

서비스보다 유명하진 않지만 XML-RPC 통신할 없는 시스템조차도 관리할 있는 쉬운 방법이다.

 

Where SOAP is a generalized, object-oriented, messaging protocol that is designed to carry arbitrary XML payloads across any network protocol, XML-RPC is a simple procedural protocol designed only to make remote function calls

SOAP 서비스는 XML 전송하기 위한 객체 지향의 네트워크 프로토콜인데 반해 XML-RPC 단순 리모트 펑션을 부르기 위한 방법 하나이다.

 

CPAN의 RPC::XML 모듈을 사용한다.

 

결론: SOAP Web Service와 XML-RPC는 다름 ㅋㅋㅋㅋ

데이터를 전송하는 복잡한 행동 보다는 서버의 프로시져를 단순히 CALL해서 사용할 때 사용한다.

두 개의 프로토콜을 적절히 조합해서 사용하면 최상의 결과를 얻을 수 있음

주제들

주제를 정해서 공부 하려 한다.
같은 관심사를 가진 사람들을 모아서 같이 했으면 하는데.
혼자서 넘기 힘든 높은 산은 여럿이서 넘는다.
오르라인 모임이라도 하고 싶은데..ㅋㅋ 관심 있으신분은 댓글 ㅋㅋ

1. Perl Web Service VS java Web Service

2. XML-RPC
무엇이고, 어떻게 구현이 가능한가

3. XML-RPC / Soap으로 구현한 Web Service의 차이?

4. Perl SOAP Web Service도 binary 처리가 가능한가?

코뮌 [Commune] 이란?

프랑스 중세의 주민자치체.

12세기에 북프랑스를 중심으로 급속하게 성립되었다. 본래 서로 평화를 서약한 주민의 공동체로서, 사회의 혼란이나 영주권()의 남용에 대해서 사회질서의 안정을 도모하기 위해, 주민이 상호부조를 명세하고 단결하며 왕 또는 영주로부터 특별히 사회단체로 인정을 받은 것이다.

서약을 깨뜨린 사람은 집을 파괴당하거나 추방되었다. 농민의 자치체도 있었으나 일반적으로는 시민의 자치체, 즉 자치도시가 많았는데 보통 시장(), 기타의 임원을 선출하여 자치행정을 행하고 재판권도 가지고 있었다. 중세 말기에 왕권의 간섭이 강화되자 도시는 과두정치화하여 백년전쟁의 혼란 속에 쇠퇴해갔으나 자치체의 개념만은 1871년의 파리 코뮌에서 볼 수 있는 것처럼 그 후에도 존속하였다.

네이버 백과사전의 정의.

호모 쿵푸스를 보고 지식의 코뮌을 만들고자 생각하게 되었다.
혼자서는 넘기 힘든 높은 산도 함께라면 넘을 수 있다고 생각하며..

2007년 6월 13일 수요일

ssl의 사용을 위한 Net::SSL설치

<오류화면>
LWP will support https URLs if the Crypt::SSLeay module is installed.
More information at <http://www.linpro.no/lwp/libwww-perl/README.SSL>.

<설치 명령>

C:\>ppm install Net::SSL
Downloading ActiveState Package Repository packlist...done
Updating ActiveState Package Repository database...done
Downloading ppm packlist...not found
No missing packages to install

2007년 6월 11일 월요일

Apache AXIS를 이용한 웹서비스 강좌

다음까페의 프로그래머자료 카페에서 참조 했습니다.
http://cafe251.daum.net/_c21_/bbs_search_read?grpid=19VVx&fldid=Ki0S&contentval=00008zzzzzzzzzzzzzzzzzzzzzzzzz&nenc=rZc2_1ntyEMM3NSIvBc.2w00&dataid=8&fenc=w5lwmbf1XmU0&docid=CDb9MIhS


AXIS에 대한 자료가 많지 않은데요.. 참 정리가 잘 된 문서인 것 같습니다. 시키는 대로 테스트를 하다 보니.. 웹서비스의 개념이 어느정도 잡히는 듯 합니다. 좋은 자료라 공유해봅니다. 참고하세요~~)

 
Apache AXIS를 이용한 웹서비스 강좌(팁)
개요 : 톰캣(자바)환경에서 axis를 이용한 웹서비스

Apache Axis is an implementation of the SOAP ("Simple Object! Access Protocol") submission to W3C.
아래의 내용은 중요하므로 기본 개념이 분명이 있어야 한다.
본 강좌(팁)은 사용법을 위주로 아주 기초적인 예제를 다룰것이므로 자세한 내용은 생략한다.
SOAP (Simple Object! Access Protocol)
WSDL (Web Service Description Langauge)
WSDD (Web Service Deployment Descriptor)
"웹서비스는 인터넷을 통해 제공되는 소프트웨어가 PC나 휴대폰과 같은 다중 기기에서 동일하게
작동하도록 해준다. 여기에는 데이터 교환의 표준이면서 경쟁 관계에 있는 기술들이 서로 통신하고
협동하도록 해주는 XML(Extensible Markup Language), 웹서비스 간에 어떻게 인터넷을 통해
교신하는지를 서술하는 SOAP(Simple Object! Access Protocol), 웹서비스가 무엇이고 또 어떻게
접근할 수 있는지를 기술하는 WSDL(Web Services Description Language), 그리고
온라인 전화번호부의 역할을 수행하면서 기업들로 하여금 웹서비스를 등록, 홍보, 검색할 수
있도록 하는 UDDI(Universal Description, Discovery andIntegration) 등이 포함된다."

1. Apache Tomcat 4.1 이상 , Full Version으로 설치
  • 톰캣 5.5.4 버젼을 사용하였다. (참고로 Windows환경이다.)
    설치후 http://localhost:8080으로 확인해서 동작이 되면 정상이다.
    이것이 톰캣설치의 전부이고, jsp 및 servlet이 동작이되면 준비는 되었다.
    필요에 따라 jdbc등 기타 드라이버를 c:\tomcat\common\lib\ 에 복사 한다.
  • set CATALINA_HOME=c:\tomcat

2. 자바 개발툴킷 설치 : JDK 1.4 버젼 이상이면 된다.

  • 참고로 jdk 1.5 버젼을 설치하였다.
  • 설치 후에 classpath를 설정한다.
    set CLASSPATH=.;c:\jdk15\lib\tools.jar;c:\tomcat\common\lib\servlet-api.jar;
    추가적으로 필요한 jdbc 및 기타 라이브러리들을 추가한다.
  • set JAVA_HOME=c:\jdk15
    set PATH=c:\jdk15\bin; 을 기존 PATH에 추가한다.

3. ANT 설치 (옵션) : ant에 대해서는 다른 문서나 커뮤니티 사이이트에서 참고할것.

  • http://ant.apache.org에서 ant 1.6.2 버젼을 받아서 설치한다.
    설치는 다운 받은 파일을 압축을 풀어서 일정한 디렉토리에 옮겨놓으면 된다.
  • set ANT_HOME=c:\ant
    set PATH=c:\ant\bin; 을 기존 PATH에 추가한다.
  • C:\tomcat\server\lib\catalina-ant.jar 파일을 c:\ant\lib\ 디렉토리로 복사한다.
  • 추가적으로 junit 이나 xml관련 라이브러리등을 c:\ant\lib\ 에 복사하여 사용하면 된다.

4. AXIS 설치 : http://ws.apache.org/axis/ , http://ws.apache.org/axis/releases.html

  • axis 사이트에서 최신 릴리즈를 다운받아서 압축을 푼후에, 원하는 디렉토리에 옮겨놓으면 된다.
    참고로 1.1 final version를 다운 받아서 사용중이다.
  • set AXIS_HOME=c:\axis
  • set AXIS_LIB=%AXIS_HOME%\lib
  • set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;
    %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
    %AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar;
    %AXIS_LIB%\wsdl4j.jar
  • set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH% 으로 기존 CLASSPATH 에 추가한다.
  • 참고 :
    CLASSPATH에 있는 xml-apis.jar 파일과 xercesImpl.jar 파일은
    http://xml.apache.org/ 에서 받으면 된다.
    또한, 아래에서 보게 될 라이브러리 테스트를 통하여 추가 라이브러리를 확인할수 있고
    확인후에 필요한 다운 사이트 정보까지 나오게 되므로 정보를 확인후 다시 설정해주면 된다.

5. axis를 톰캣에 연동하기

  • 연동에 있어서 특별한 것은 없고 단지, c:\axis\webapps\axis\ 에서 axis디렉토리를
    c:\tomcat\webapps\axis로 복사하면 된다. 즉, 톰캣 webapps디렉토리에 axis 컨텍스트가
    추가 되었다고 이해해도 되겠다.

6. 테스트 해보기

  • 톰캣을 실행하고
  • 연결테스트를 해본다.
    http://localhost:8080/axis
  • 라이브러리 테스트
    http://localhost:8080/axis/happyaxis.jsp 에서 필요하거나 필수적인 추가 라이브러리를
    설치하라는 경고 메시지를 보여주기 때문에 이때 필요한 라이브러리를 다운받아서
    c:\tomcat\webapps\axis\lib\ 에 복사해주고 다시 테스트를 해본다.
    필요에 따라서 다운받은 라이브러리를 CLASSPATH에 설정해주어서 jdk로 컴파일할때 이용하자.

7. SOAP 테스트

  • http://localhost:8080/axis/services/Version?method=getVersion
    다음과 같이 출력되면 정상적으로 설치가 된것이다. (내용은 환경에 따라 약간 차이가 난다.)

    - xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    -
    -
    Apache Axis version: 1.1 Built on Jun 13, 2003 (09:19:43 EDT)



8. AdminClient 테스트

  • C:\axis\samples\stock 디렉토리로 이동하여 예제로 테스트해보자.
  • java org.apache.axis.client.AdminClient
    -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
  • deploy가 되었는지 확인하고, 에러가 나면 거의 대부분의 원인은 클래스패스에서 나온다.
  • deploy가 제대로 되었는지 확인해보자.
    http://localhost:8080/axis/servlet/AxisServlet
    아래처럼 추가된 부분이 웹에 보인다면 성공적으로 deploy된것이다.
    urn:xmltoday-delayed-quotes (wsdl)
    test
    getQuote

9. Client 수행 테스트

10. 프로그램 작성 순서

  • 서버 Interface와 구현 Class를 작성한후 컴파일 한다.
  • 구현 클래스로 부터 WSDL 파일을 생성한다.
  • WSDL 파일로 부터 deploy.wsdd 파일을 생성한다.
  • deploy.wsdd 파일을 이용해서 웹서비스를 deploy하고 server-config.wsdd 파일을 생성 수정한다.
  • 구현클래스로 부터 client-side 클래스를 생성한다.

11. 프로그램 작성 플로우

 

12. 예제 프로그램

  • 자바 Interface와 자바 Implement 클래스 작성
    c:\test\ 에 아래 2개의 파일을 생성한다.

    //begin - HelloIF.java
    package webservice.hello;
    public interface HelloIF extends java.rmi.Remote {
    public String hello(java.lang.String name) throws java.rmi.RemoteException;
    }
    //end - HelloIF.java

    //begin - HelloImpl.java
    package webservice.hello;
    public class HelloImpl implements HelloIF {
    public HelloImpl() {
    }
    public String hello(String name) {
    System.out.println(name);
    return "hi " + name;
    }
    }
    //end - HelloImpl.java

  • 컴파일

    javac -d . HelloImpl.java
    컴파일 후 c:\test\webservice/hello 디렉토리밑에 HelloImpl.class 와 HelloIF.class가 생성.
    생성된 class파일을 C:\Tomcat\webapps\axis\WEB-INF\classes
    디렉토리에 패키지 디렉토리를 포함해서 복사한다.
    참고: 컴파일이 되지 않을경우, HelloIF.java파일을 먼저 컴파일한후에 c:\test\webservice/hello
    디렉토리에 HelloIF.class파일을 복사해놓고 다시 컴파일 해본다.

  • 구현된 클래스로 부터 WSDL 생성 하기

    java org.apache.axis.wsdl.Java2WSDL -o c:\test\webservice\hello\Hello.wsdl
    -l http://localhost:8080/axis/services/Hello -n http://hello.webservice -pwebservice.hello
    http://hello.webservice webservice.hello.HelloIF

    Java2WSDL 인자 (http://ws.apache.org/axis/java/reference.html)
    인 자
    의 미
    -o 파일경로 wsdl 생성 위치
    -l URL client가 접속할 URL
    -n 네임스페이스 WSDL의 타켓 네임스페이스
    -p패키지 네임스페이스 네임스페이스와 네임스페이스 매핑
    Target 인터페이스 이름


    [생성된 Hello.wsdl 파일]


    ...
    ...생략...
    ...







  • WSDL 파일로 부터 deploy.wsdd 파일 생성 및 client-side 자바 클래스 생성

    java org.apache.axis.wsdl.WSDL2Java -o c:\test\webservice\hello\
    -d Application -s c:\test\webservice\hello\Hello.wsdl

    c:\test\webservice\hello 디렉토리 하위에 webservice/hello
    새로운 디렉토리가 생성된것을 확인 할수 있다.
    그 디렉토리에 deploy.wsdd 파일과 새롭게 생성된 자바 파일이 존재해야 한다.
    또한, undeploy.wsdd 파일도 생성 된 것을 볼수 있는데 이파일은 서비스를
    undeploy할때 사용한다.
    인 자
    의 미
    -o 디렉토리경로 wsdd 파일과 클래스파일이 생길 디렉토리
    -d scope 설치 영역 - Application, Request , Session
    -s wsdd 파일 생성
    Target wsdl 파일 경로

  • [deploy.wsdd 파일 수정]
    wsdd 파일은 wsdl 파일만 가지고 생성되었기 때문에 실제 구현클래스가 무엇인지 제대로
    설정이 안되어 있으므로 그부분을 수정해 주어야한다.
    붉은색 부분으로 해당 부분을 수정해주면 된다.

    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    ...
    ...생략...
    ...
    webservice.hello.HelloImpl"/>
    ...
    ...생략...
    ...





  • 서비스 디플로이먼트 하기

    java org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd    <== 포트번호를 80등으로 바꿀경우는 꼭 이와같은 행태로 -l옵션을 주어서 드플로이 해야만 한다.

    [디플로이먼트 확인하기]
    http://localhost:8080/axis/servlet/AxisServlet
    'Hello' 라는 서비스가 설치된것을 확인할 수 있다.

  • 서비스 언디플로이먼트 하기

    java org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService undeploy.wsdd

    [언디플로이먼트 확인하기]
    http://localhost:8080/axis/servlet/AxisServlet
    'Hello' 라는 서비스가 삭제 된것을 확인할 수 있다.

14. 클라이언트 구현하기

  • 이제 생성된 서비스에 클라이언트로 접근해보는 예제를 생성하고 테스트 해보자.
    아래와 같이 작성하고 c:\tomcat\webapps\axis\ 복사한다.

  • [HelloClient.jsp]
    <%@ page contentType="text/html; charset=euc-kr" language="java"
    import!="java.net.MalformedURLException,
    java.net.URL,
    java.rmi.RemoteException,
    javax.xml.namespace.QName,
    javax.xml.rpc.ServiceException,
    org.apache.axis.client.Call,
    org.apache.axis.client.Service" %>
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">






    <%
    Service service = new Service();
    Call call = (Call)service.createCall();
    call.setTargetEndpointAddress(new URL("http://localhost:8080/axis/services/Hello?wsdl"));
    call.setOperationName(new QName("http://soapinterop.org/", "hello"));
    String returnValue = (String)call.invoke(new Object![]{"! 안녕하세요.^^*"});
    out.println(returnValue);
    %>



  • http://localhost:8080/axis/hello.jsp

    hi ! 안녕하세요.^^*

  • 위에서 처럼 나오면 성공이다. HelloClient.jsp부분하고 차이가 없는것 같지만
    "! 안녕하세요" 와 "hi ! 안녕하세요" 차이가 크다.(구현하는 프로그램적으로...)
    즉, hi 라고 출력되어지는 String hello() 웹 메소드를 HelloImpl.class에서 가져와서 실행하는 것이다.

14. 두번째 예제

  • 첫번째 방법 외에 빠른 방법이 있다.
    자바 파일을 만들고 확장자를 java가 아닌 jws로 바꾸고 실행하는 방법이다.
    참고로 c:\tomcat\webapps\axis\WEB-INF\web.xml를 한번 검토해길 바란다.
  • [ HelloWorldService.jws]

    public class HelloWorldService
    {
    public String HelloWorld(String data)
    {
    return "Hello World! You sent the string '" + data + "'.";
    }
    }

  • 위의 파일을 c:\tomcat\webapps\axis\ 에 복사하고

    http://localhost:8080/axis/HelloWorldService.jws

    그 주소에 설치된 서비스가 있다는 HTML 페이지가 나온다. 여기서 더나가 HelloWorld 메서드를 호출해보자.

    http://localhost:8080/axis/HelloWorldService.jws?method=HelloWorld&data=Hi+my+name+is+okjsp

    메서드를 호출한 결과 XML을 받았다.

  • 자바로 클라이언트 구현 하기


    [ HelloWorldClient.java]

    import! java.net.MalformedURLException;
    import! java.net.URL;
    import! java.rmi.RemoteException;
    import! javax.xml.namespace.QName;
    import! javax.xml.rpc.ServiceException;
    import! org.apache.axis.client.Call;
    import! org.apache.axis.client.Service;

    public class HelloWorldClient
    {
    public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException
    {
    Service service = new Service();
    Call call = (Call)service.createCall();
    call.setTargetEndpointAddress(new URL("http://debianbox:8080/axis/HelloWorldService.jws"));
    call.setOperationName(new QName("http://soapinterop.org/", "HelloWorld"));
    String returnValue = (String)call.invoke(new Object![]{"My name is okjsp."});
    System.out.println(returnValue);
    }
    }

  • HelloWorldClient.java 파일을 컴파일 하고 실행 해서 결과를 확인해 본다.
    참고로 컴파일 에러가 나는 경우는 라이브러리등이 CLASSPATH에 잡혀있지 않아서 이다.
    본 문서의 처음 부분에 있는 설정 부분을 확인해 보고 다시 시도 해보자.

15. 다른 시스템과 연동하기

SOAP로 운영되고있는 서버 시스템과 연동을 한다고 하면 먼저 해당 시스템에 wsdl을 알아야만 한다.

SOAP서버 운영자로부터 wsdl을 볼수있는 url이나 .wsdl파일을 요청하도록한다.

그렇게 해서 받은 wsdl파일을  첨부된pdf 파일에서 언급된 WSDL2Java 명령을 이용하여 java파일들을 생성하게 된다.

이렇게 생성된 java파일들을 통해 바로 써버쪽에서 써비스와 연결할 수 있는 정보들을 알수있다.

즉,서버쪽에서 AxisServlet에 등록된 모듈에 대한 인터페이스 관련 파일들인것임.

이 java파일들을 이용해서 첨부파일 예제인 FactClientByWSDL.java파일과 같이 client 파일을 만들어 실행시키면 서버와  연결하여 데이터를 받을 수 있게된다.

물론 client 파일 실행시에는 해당 FactClientByWSDL.java 파일과 WSDL2Java 명령으로 생성된 자바파일이 패키지화 되어 있어야 참조하여 실행이 될것이고 axis관련된 jar파일들도 classpath에 참조가 되어야 할것이다.

Apache AXIS를 이용한 웹서비스 강좌

2007년 6월 10일 일요일

아가씨, 대중문화의 숲에서 희망을 보다 (정여울)

서른도 안된 아가씨가 대중문화의 숲에서 깊은 사색을 했다고 한다.
인생의 모든 부분에서 강한 느낌을 받고자 했지만 유독 대중 문화를 무시? 혹은
기피하던 나였기에 그녀가 받았을지 모를 대중 문화로 부터의 강한 느낌이
무섭게 느껴진다.

책을 피는 순간 어떤 느낌이 전해져 올까...강한 바람이 전해지지 않을까?
지금 읽고 있는 책들이 많은지라 언제쯤 읽을 수 있을지는 모르겠지만..
꼭 읽고 감상을 남겨야 겠다.

공부하는 사람이 의심할 줄 모르면 크나큰 병통이다.

호모 쿵푸스란 책을 일고 있다, 그 한구절에 분서(이탁오)의 구절이 인용되어 있었다.
"공부하는 사람이 의심할 줄 모르는 것은 크나큰 병통이다, 의심해야지만 분석하게 되고 의심을 깨면 깨달음인것..."

이탁오란 사람을 새로이 알게 되었다. 검색을 해보니 다음같은 구절이 있었다.

==============================
(이탁오의) <분서>(한길사, 2004)는
건조한 철학책이 한 사람을 종일토록 울게 할 수도 있음을 증명해 보임으로써,
글이란 반드시 어떤 특정한 장르에 속할 필요가 없음을 온몸으로 보여주었다. (...)
어떤 장르도 아닌 채로 글 자체의 에너지로 진검 승부하는 글쓰기.
그의 글은 일상과 현실에 대한 하루하루의 고뇌 자체가 철학으로 여울질 수 있다는 희망이다.
이탁오의 <분서>는 철학이고자 하지 않는데도 철학이 되었고
차라리 '태워버려야 할 책'(焚書)이 되고자 몸부림쳤음에도
아무도 훼손할 수 없는 걸작이 되었다. (...)

아무것도 가지려 하지 않았기에 모든 것을 품에 안을 수 있었던 사람.
<분서>는 앎을 과시하기 위해서가 아닌, 교양이나 권력을 뽐내기 위해서가 아닌,
알고 죽지 않으면 인생이 너무 서러울 것 같아,
차마 멈출 수 없는 그리움으로 뿜어낸 사유의 기록이다."

 정여울, <<아가씨, 대중문화의 숲에서 희망을 보다>> 중에서
==============================
정여울은 누굴까?

2007년 6월 9일 토요일

type casting

integer to String : 
 int i = 42;
 String str = Integer.toString(i); or String str = "" + i
 
double to String : 
 String str = Double.toString(i);
 
long to String : 
 String str = Long.toString(l);
 
float to String : 
 String str = Float.toString(f);


String to integer :
 str = "25";
 int i = Integer.valueOf(str).intValue(); or int i = Integer.parseInt(str);
 
String to double : 
 double d = Double.valueOf(str).doubleValue();
 
String to long : 
 long l = Long.valueOf(str).longValue(); or long l = Long.parseLong(str);
 
String to float : 
 float f = Float.valueOf(str).floatValue();

decimal to binary : 
 int i = 42; String binstr = Integer.toBinaryString(i);

decimal to hexadecimal : 
 int i = 42; String hexstr = Integer.toString(i, 16);
 or String hexstr = Integer.toHexString(i);
 or (with leading zeroes and uppercase)
 
 public class Hex { public static void main(String args[])
 {
  int i = 42;
  System.out.print(Integer.toHexString( 0x10000 | i).substring(1).toUpperCase());
  }
 } 

hexadecimal (String) to integer : 
 int i = Integer.valueOf("B8DA3", 16).intValue(); or int i = Integer.parseInt("B8DA3", 16); 

ASCII code to String 
 int i = 64;
 String aChar = new Character((char)i).toString();

integer to ASCII code (byte) 
 char c = 'A';
 int i = (int) c; // i will have the value 65 decimal

To extract Ascii codes from a String 
 String test = "ABCD";
 for ( int i = 0; i < test.length(); ++i )
 {
  char c = test.charAt( i );
  int j = (int) c;
  System.out.println(j);
 }

integer to boolean 
 b = (i != 0);
 
boolean to integer 
 i = (b)?1:0;
 
note :
 To catch illegal number conversion, try using the try/catch mechanism.
 
 try{
  i = Integer.parseInt(aString);
 }
 catch(NumberFormatException e)
 {
 }


 

2007년 6월 4일 월요일

nmake of packages resulting in Undefined UpdateHTML_blib error

By default @INC = (qw{C:/Perl/site/lib C:/Perl/lib .})

so it searches for modules in this order, at least as far as I remember. The problem is that C:/Perl/site/lib/ActivePerl/DocTools.pm doesn't have UpdateHTML_blib() function.

But this function exusts in C:/Perl/lib/ActivePerl/DocTools.pm, so you have two ways of fixing it:
- copy C:/Perl/lib/ActivePerl/DocTools.pm C:/Perl/site/lib/ActivePerl # which I did and it works
- modify makefile to correct @INC # didn't check but should work.

HTH,
Alex.

2007년 6월 1일 금요일

이클립스 워크샵

흠 가고 싶군 하지만 기초 정보가 부족해서 가봐야 도움이 못 되겠네.

Agenda
1
10:00~11:20
리치 클라이언트 개발을 위한 이클립스 활용 노하우
  • 1.리치클라이언트 개발을 위한 이클립스 (20분)
  • 이클립스 RCP와 SWT 개요
  • 이클립스 SWT 프로그래밍 개요
  • 이클립스 SWT 위젯과 이벤트
  • 2. 이클립스 SWT를 이용한 스탠드얼론 리치 클라이언트 개발하기 (20분)
  • 스톡 로봇 예제 어플리케이션 소개
  • 앤트 빌드 스크립트 설정
  • ProGuard를 이용한 코드 어퓨스케이트
  • JSmooth를 이용한 EXE 래퍼 프로그램 생성
  • 인스톨 팩토리를 이용한 인스톨 프로그램 생성
  • 3. 자바 웹스타트를 이용한 웹 기반의 리치 클라이언트 개발하기 (40분)
  • 파일 다운로드 어플리케이션 소개
  • 자바 웹스타트로 배포하기 위한 보안 및 사이닝
  • 앤트 스크립트를 이용하여 빌드 자동화 하기
  • JNLP 페이지 만들기 및 동적 데이터 설정
  • 아파치 HttpClient를 이용한 파일 다운로드 기능 구현하기
  • 서버와 리치 클라이언트 간의 데이터 동기화
  • 웹어플리케이션과 리치 클라이언트 간의 세션 동기화/li>
박용우 박사
'이클립스 SWT' 저자
Lunch Break
2
12:30~13:30
자바/JSP 환경에서의 이클립스 플러그인 활용 핵심 노하우
  • 1. 이클립스 플러그인을 활용하여 자바/JSP 개발 환경 세팅
  • metadata 디렉토리를 이용하여 Eclipse 개발 환경 공유
  • WTP 플러그인을 활용한 자바/JSP 개발 환경 구축
  • Maven IDE를 이용하여 Ant + Maven 빌드 환경 구축
  • 2. 다양한 이클립스 플러그인을 활용한 자바/JSP 웹 애플리케이션 개발
  • Spring IDE 플러그인을 이용한 Spring 프레임워크 기반 개발
  • Implementors 플러그인을 이용하여 구현 클래스 접근
  • Quick Regular Expression 플러그인을 이용한 정규 표현식 구현
  • OMONDO 플러그인을 활용한 UML 다이어그램 작성
  • Eclipse 플러그인을 이용한 소스 코드 품질 향상 방안
박재성 DM
NHN
Coffee Break
3
13:40~14:40
PHP 환경에서의 이클립스 플러그인 활용 핵심 노하우
  • 1. PHP 를 위한 통합 개발 도구, PHPEclipse
  • PHPEclipse 소개
  • PHPEclipse 설치
  • PHPEclipse Workbench
  • 2. PHPEclipse 로 생산성 200% 높히기
  • 프로젝트 생성
  • PHPEclipse 에서 PHP 프로그램 실행
  • PHPEclipse 에서 PHP 프로그램 실시간 디버깅
용영환
NHN
Coffee Break
4
14:50~15:50
웹 프로젝트 소스 관리를 위한 이클립스 활용 노하우
  • 1. 버전관리란?
  • 2. 버전관리의 필요성
  • 3. 버전관리 시스템
  • 4. CVS란?
  • 5. CVS 작업 사이클 및 용어 설명
  • 6. CVS 서버 설정
  • 7. CVS와 이클립스
  • 8. Subversion과 이클립스
민진우
(주)이루넷
Coffee Break
5
16:00~17:00
이클립스 실제 프로젝트 활용 사례
  • 1. Eclipse Project 설정
  • 효율적인 Project 구조
  • Project module 설정을 활용한 개발
  • 분산 프로젝트에서의 Test
  • 2. Framework 선택과 eclipse팁
  • UI 계층 Framework선택과 효율적인 개발방법
  • 비즈니스 계층 Framework선택과 효율적인 개발방법
  • Persistence 계층 Framework선택과 효율적인 개발방법
  • 3. appfuse를 활용한 Project 적용사례
  • appfuse소개
  • 실제 프로젝트에서의 활용 방안
  • 실제 적용 예
장진달
다음커뮤니케이션
Coffee Break
6
17:10~18:10
이클립스 플러그인 개발 가이드
  • 1. 이클립스 플랫폼
  • 이클립스의 의미와 역사
  • 이클립스 플랫폼 현황
  • 2. 이클립스 플러그인 개발 기초
  • 이클립스 플랫폼 아키텍처
  • 이클립스 워크벤치 구성요소
  • 플러그인 개발 환경 개요
  • 3. 이클립스 플러그인 개발 활용 예시
양석호 과장
NHN

뱃살을 뺀다네



다이어트 및 복근 운동

유교 아시아의 힘

중이미지보기
ISBN-13 : 9788959132171
15,120 + 10% 할인 + 2,270원 적립 (yes24)

1부 인간의 길-仁, 사랑의 여정
동서고금을 뛰어넘은 정서
극단으로 치달은 효, 그 어두운 그늘
진정한 사랑을 베푸는 것
인간의 길
인류가 살아가야 하는 법

2부 경제의 길-義, 빠르고 좁은 길
동아시아의 경제 발전과 그 아이러니
공자는 경제 전문가였다
동아시아 경제 성장의 코드를 찾아라
호설암과 유상의 전통을 잇다, 중국
숨기지 않고 깨끗하다, 한국의 상도
오사카 상인 정신을 말하다, 일본
의로써 세계 경제의 한계를 넘다

3부 관계의 길-禮, 신비로운 힘
천국과 지옥을 넘나든 예의 운명
파란만장한 예의 역사적 이야기
예의 정신이 이룬 동아시아 문명
서도, 공자가 본 예의 본질
곳곳이 서도다, 한국의 예
600년 전통을 잇다, 일본의 예법
미래, 긍정적 관계의 키워드

4부 공부의 길-智, 세상을 위한 수양
식을 줄 모르는 교육열
배움을 사랑한 공자
동아시아 교육의 벽
배움의 진정한 의미를 찾다
공자의 뜻을 이어받은 조선의 교육
타락한 교육 실태를 파헤치다
문명 발전을 이끌 거대한 힘