<4D F736F F D E30382E30322E B1E2B9DDC0C720C0A5BCADBAF1BDBA20BFEEBFEBC0FDC2F7BCAD2E646F63>

Size: px
Start display at page:

Download "<4D F736F F D E30382E30322E B1E2B9DDC0C720C0A5BCADBAF1BDBA20BFEEBFEBC0FDC2F7BCAD2E646F63>"

Transcription

1 Apache Axis 기반의웹서비스운용절차서 문서이력 1 / 40 페이지

2 Table of contents 1. 시스템제반사항 시스템환경구성 시스템환경설정 JWS 파일을통한 Instant Deployment JWS 형식소개 JWS 서비스구현 JWS 서비스배포검증 JWS 서비스클라이언트구현및테스트 WSDD 작성을통한 Custom Deployment 서비스구현및 WSDD 작성 서비스배포검증 서비스클라이언트구현및테스트 WSDL을이용한 Custom Deployment 서비스및서비스인터페이스구현 Java2WSDL 수행 WSDL2Java 수행 자동생성된클래스간의관계분석 서비스구현 서비스배포및 AdminClient 수행 서비스클라이언트구현및테스트 SOAP 요청 / 응답메시지확인하기 References...40 본문서는프로젝트수행도중틈틈히시간을내서작성된문서입니다. 개인적인노력과시간투자에의한산출물인만큼배포하실때는꼭작성자와출처를명시해주시기바랍니다. 2 / 40 페이지

3 1. 시스템제반사항 본장에서는웹서비스테스팅을위한시스템제반사항들에대해기술한다. 모든예제들은 Eclipse를통해구현하였으나설명의이해를돕기위해커맨드창을이용하여하나씩하나씩단계별로수행해가면서설명할것이다. 시스템환경을구성하는프로그램들은 2006년 8월기준으로최신버전으로선정하였으다. 단, Axis는 Axis2의최신버전이아닌 Axis의최신버전으로선정하였다. [ 알림 ] 본문서에서혹여간과하고지나친부분이있거나수정될사항이있다면다음의이메일을통하여문의바람. cache798@naver.com 또는 sonny@infravalley.com 1.1. 시스템환경구성웹서비스테스팅을위한다음과같은시스템구성요소들은다음과같다. 기본적으로 Java 버전 5.0을기준으로하여다른요소들을조합하였으며, 본문서에서제시하는모든서비스시나리오도이를기반으로운용된다. Windows XP Professional (SP2) Java2 SDK v1.5.0_07 Apache Tomcat v Apache Axis v1.4 Final Release Apache Ant v1.6.5 Eclipse SDK v3.2 환경변수들은 시스템설정정보-> 고급탭-> 환경변수버튼 의경로를통해서다음과같은사항들을각각설정한다. 환경변수들은사용자의구미에맞게변경하도록한다. JAVA_HOME = C: Java Java2.SDK v1.5.0_07 AXIS_HOME = C: Java Apache.Axis v1.4 CATALINA_HOME = C: Java Apache.Tomcat v ANT_HOME = C: Java Apache.Ant v1.6.5 Path = %JAVA_HOME% bin;%ant_home% bin; %CATALINA_HOME% bin; 다음그림은위의환경변수들을설정한상태를보여주고있다. 3 / 40 페이지

4 ( 그림 ) 환경변수설정화면 1.2. 시스템환경설정앞에서구성한시스템환경을기초로본절에서는웹서비스테스트를위한상세한시스템환경설정사항에대해기술한다. 우선, %AXIS_HOME% webapps axis 디렉토리를 %CATALINA_HOME% webapps 디렉토리로복사한다. 단, %AXIS_HOME% webapps axis WEB-INF lib 내의모든 jar 파일들은 %JAVA_HOME% jre lib ext 디렉토리로복사하자. 이는여러프로젝트에서 Axis 관련 API를공유해서개발하기위함이다. 이러한과정후에가장기본적인웹서비스를운용할수있는 Axis 서비스환경이 Apache Tomcat 상에서구성된다. 커맨드상에서 Ant를구동하기위해서는 AntMain을 J2SDK v5.0 런타임이마운팅해야한다. Tomcat v 버전에서는 common lib 내에 ant-launcher.jar 파일을기본적으로지원하였으나, Tomcat v 버전에서는선택사항으로바뀌어사용자가해당파일을 %JAVA_HOME% jre lib ext 디렉토리내에카피해주어야커맨드상에서 Ant 실행이가능해진다. 만약 Eclipes를이용할경우, Eclipse가기본적으로 Ant v1.6.5를지원하고있으므로이과정은생략될수있다. 설치한 Tomcat을구동한후, 로접속한다. 아래의왼쪽과같은페이지가성공적으로보여지면, Tomcat 설치가문제없이성공한것이다. 또한 Axis 설치사항을 4 / 40 페이지

5 확인해보기위해 로이동해보자. 아래의오른쪽과같은페이지가성공적으로보여지면, Axis 또한설치에문제가없는것이다. ( 그림. 좌 ) Tomcat 구동화면, ( 그림. 우 ) Axis API 테스트화면 위와같이 Apache Tomcat과 Axis가성공적으로설치가되었을경우, Axis의필수 / 선택 API 들을추가해야 Axis가제기능을지원할수있다. 아래와같은 URL로이동한후 Validation 메뉴를통해 Axis 지원 API를체크해보자. 위의 URL을통해로딩된페이지에는아래의메시지와같이 activation.jar와같은필수 API 의부재에대한경고메시지와 xmlsec.jar, mail.jar 이렇게 2개의선택 API의부재에대한경고메시지가나타날것이다. 1 core axis library(ies) are missing. 2 wanted optional axis librar(ies) are missing. 이를해결하기위해서필수 / 선택 API 아카이브파일들을아래의디렉토리에복사한다. %CATALINA_HOME% webapps axis WEB-INF lib activation.jar (Sun JavaBeans(TM) Activation Framework v1.1) - 이는필수사항으로써, 이 API가지원되지않을경우, 자바빈즈를비롯한 Axis 동작이불가능하다. - 다운경로 mail.jar (Sun Java Mail v1.4) - 이는선택사항으로써, 이 API를통해서 Multipart MIME을지원함으로써웹서비스에파일첨부 (Attachment) 기능을사용할수있다. 5 / 40 페이지

6 - 다운경로 xmlsec.jar (Apache XML Security v1.3.0) - 이는선택사항으로써, 이 API를통해상세한 XML 보안기능들을적용할수있다. - 다운경로 Apache Tomcat을재구동한후에다시한번 Axis 페이지의 Validation 링크를통해 Axis의 API 지원테스트를수행한다. 아래는정확히설치된경우의메시지이며, 성공적으로 library 테스팅이완료된화면이다. The core axis libraries are present. The optional components are present. ( 그림 ) API 추가설치후 API 테스트화면 6 / 40 페이지

7 2.JWS 파일을통한 Instant Deployment 본장에서는 Axis를통한 Java Web Service 구현을위해.jws 서비스개발방식을이용에대한기본적인사항들에대해기술한다. 본장에서사용한예제는모두 Eclipse를사용하여구현하였으나직관적인설명을위해툴이아닌수작업으로도스창을통해컴파일및수행과정을하나하나보여가며설명할것이다. 2.1.JWS 형식소개 JWS는 Java Web Service의약자이다. Axis는.jws 확장자를가진 Java 클래스를사용하여웹서비스가배포를지원한다. 이는서블릿엔진내에배포된 JSP에대한전형적인방식이다. 런타임동안에확장자.jws 를가진소스파일을 %CATALINA_HOME% webapps axis 디렉토리에복사함으로써배포과정을간소화할수있다. 이때 Axis 런타임은자동으로클래스들을모든메소드들과함께배포된서비스로서컴파일하고실행한다. 컴파일과정후에는다음과같은디렉토리내에컴파일된.class 파일들이생성됨을확인할수있다. %CATALINA_HOME% webapps axis WEB-INF jwsclasses 그러므로, JWS 파일을이용하여 Axis 서비스를운용할경우후반부에언급할 WSDD 배포디스크립터를통한복잡한배포과정을수행할필요가없다. 단지 Copy & Paste로만배포과정이완료된다. 2.2.JWS 서비스구현우선, 웹서비스를생성하기위해아래와같은내용으로 Factorial.jws 파일을생성한후, 이파일을아래의디렉토리내에저장한다. %CATALINA_HOME% webapps axis public class FactServiceByJWS{ public long getfactorial(int n) { if(n <= 0) return 1; else return n * getfactorial(n-1); public String getversion() { return "1.0.0"; 7 / 40 페이지

8 ( 리스트 ) JWS 서비스구현소스, FactServiceByJWS.jws 이는일반.java 파일을.jws로바꾸어저장하여도된다. 이렇게하여도웹서비스로써수행이가능한이유는 %CATALINA_HOME% webapps axis WEB-INF 내의 web.xml 파일내부에아래와같이 jws라는 URL 패턴으로요청이들어올경우자동으로 AxisServlet으로서블릿이매핑될수있게설정이되어있기때문이다. 생략 <servlet-mapping> <servlet-name>axisservlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> ( 리스트 ) web.xml 파일의일부내용 2.3.JWS 서비스배포검증위에서작성한서비스에대한배포검증을위해다음과같은 URL로접속해보자. 이때아래와같은페이지가로딩되면서비스배포가성공한것이다. ( 리스트 ) 서비스수행결과리턴으로자동생성된 SOAP 응답메시지 8 / 40 페이지

9 위의과정후, %CATALINA_HOME% webapps axis WEB-INF 내에 jwsclasses 라는폴더내에 FactServiceByJWS.class 라는바이트코드가컴파일되어복사된다. 이모든일련의과정은클라이언트가해당웹서비스를처음호출하는시점에 Axis 내부에서자동적으로수행된다. ( 그림 ) FactServiceByJWS.class 파일생성화면 2.4.JWS 서비스클라이언트구현및테스트먼저, 아래와같은내용으로 FactClientUsingJWS.java 파일을작성한다. package com.infravalley.ws.client; import org.apache.axis.axisfault; import org.apache.axis.client.service; import org.apache.axis.client.call; import org.apache.axis.encoding.xmltype; import javax.xml.rpc.parametermode; import javax.xml.namespace.qname; import java.net.url; public class FactClientByJWS { public static void main(string[] args) throws Exception { if (args.length < 1) { System.out.println("usage: java FactClientByJWS <num>"); System.exit(1); 9 / 40 페이지

10 try { String strinparam = args[0]; int num = Integer.valueOf(strInParam).intValue(); // 웹서비스 access point 지정 String endpoint = " // 원격웹서비스에대한 Service 객체생성후, Call 객체생성 Service service = new Service(); Call call = (Call) service.createcall(); // 입출력인자정보및웹서비스 access point 를 Call 객체에바인딩 call.settargetendpointaddress( new URL(endpoint) ); call.setoperationname( new QName(" "getfactorial") ); call.addparameter("num", XMLType.XSD_INT, ParameterMode.IN); call.setreturntype(xmltype.xsd_long); // 입력인자값을가지고웹서비스호출하여실행결과얻어옴 Long result = (Long)call.invoke( new Object[] { new Integer(num) ); System.out.println(num + "! = " + result ); catch (Exception e) { e.printstacktrace(); ( 리스트 ) 서비스클라이언트구현소스, FactClientUsingJWS.java 위의소스에서유심히볼사항은아래와같다. call.setoperationname( new QName( "getfactorial") ); 다음과같이 SOAP 메시지생성시네임스페이스구성시에 QName을생성하면서인자로넘겨준네임스페이스인자값을참조한다. 10 / 40 페이지

11 생략.. <soapenv:body> <ns1:getfactorial xmlns:ns1= soapenv:encodingstyle= > <num href="#id0"/> </ns1:getfactorial> <multiref id="id0" soapenc:root="0" xsi:type="xsd:int" soapenv:encodingstyle=" xmlns:soapenc=" </soapenv:body> ( 리스트 ) SOAP 요청메시지일부 앞서작성한 FactClientByJWS.java 파일을패키지형식에맞게저장한후, 명령프롬프트 (DOS) 를이용해소스파일이저장된디렉토리로이동하여, 아래와같이서비스클라이언트소스를컴파일한다. javac -d. FactClientByJWS.java 컴파일과정이성공적으로완료된후, 아래와같이실제 Factorial 웹서비스를호출하여결과값을얻어오는클라이언트를실행한다. 아래그림과같은메시지가나오면서비스클라이언트상에서서비스호출이성공한것이다. java com.infravalley.ws.client.factclientbyjws 6 ( 그림 ) 서비스호출및수행화면 11 / 40 페이지

12 3.WSDD 작성을통한 Custom Deployment 이장에서는웹서비스배포디스크립터 (Web Service Deployment Descriptor, WSDD) 파일을통한웹서비스운용절차및기술사항에대해설명한다. 본장에서사용한예제는모두 Eclipse를사용하여구현하였으나직관적인설명을위해툴이아닌수작업으로도스창을통해컴파일및수행과정을하나하나보여가며설명할것이다 서비스구현및 WSDD 작성먼저, 아래와같은내용으로웹서비스코드를작성한다. package com.infravalley.ws.service; public class FactServiceByWSDD { public long getfactorial(int n) { if(n <= 0) return 1; else return n * getfactorial(n-1); public String getversion() { return "1.0.0"; ( 리스트 ) 서비스구현소스 FactServiceByWSDD.java 위와같이웹서비스코드를작성한후에아래와같이컴파일한다. javac -d. FactServiceByWSDD.java ( 그림 ) 컴파일결과화면 12 / 40 페이지

13 이제컴파일된클래스파일 (FactServiceByWSDD.class) 을패키지형식에맞춰서아래와같은경로에복사한다. %CATALINA_HOME% webapps axis WEB-INF classes ( 그림 ) FactServiceByWSDD.class 배포화면 다음으로앞에서작성한웹서비스를 Axis 서버에배포하기위해배포디스크립터를아래와같이작성한다. 이때작성된 deploy.wsdd 파일은앞서작성한웹서비스소스 (.java) 와동일한디렉토리에저장한다. <deployment xmlns=" xmlns:java=" xmlns:xsi=" <service name="factservicebywsdd" provider="java:rpc"> <parameter name="classname" value="com.infravalley.ws.service.factservicebywsdd"/> <parameter name="allowedmethods" value="getfactorial getversion"/> </service> </deployment> ( 리스트 ) deploy.wsdd 위와같은 WSDD 파일은 Axis에서제공하는 java org.apache.axis.client.adminclient 클래스를통해서배포처리된다. 이용상의편의를위해서배치파일을생성하여이용하자. 13 / 40 페이지

14 AdminClient 클래스는생성된배포디스크립터를이용하여웹서비스를 Axis 서버에배포하는역할을담당한다. 직접 server-config.wsdd 파일을수정하는것보다 AdminClient 클래스를이용하여배포하기를추천한다. server-config.wsdd 파일의위치는다음과같다. 만약어떠한서비스도배포한적이없다면 server-config.wsdd 파일은존재하지않을것이다. %CATALINA_HOME% webapps axis WEB-INF 아래는 AdminClient.bat off rem Java Web Service Deployment Util rem 사용법 : AdminClient <WSDD파일 > java org.apache.axis.client.adminclient %1 %2 %3 %4 %5 ( 리스트 ) AdminClient.bat 배치파일내용 위와같이배포스크립터를작성한후, 아래와같은명령으로앞서작성한웹서비스를 Axis 서버상에배포한다. 이명령을수행하기전에 Tomcat 상의 Axis 엔진이실행중이어야한다. AdminClient deploy.wsdd 위의명령이성공적으로수행된경우다음과같은화면처럼수행결과가보여질것이다. ( 그림 ) AdminClient 를통한서비스배포수행화면 3.2. 서비스배포검증해당서비스에대한배포결과는 Axis 초기페이지내의 List 메뉴를통해서확인하거나다음과같은 URL에접속하여확인할수있다. 다음과같이서비스의목록이나타나면성공적으로배포된것을의미한다. 14 / 40 페이지

15 ( 그림 ) 서비스배포완료화면 추후배포된웹서비스를 undeploy하기위해서아래와같이 undeploy.wsdd 파일을생성한다. 아래리스트는 undeploy.wsdd 파일의내용이다. <undeployment xmlns=" <service name="factservicebywsdd"/> </undeployment> ( 리스트 ) undeploy.wsdd 사용방법은 deploy.wsdd를이용하는방법과대동소이하며, 아래와같이수행하면배포된서비스를삭제할수있다. AdminClient undeploy.wsdd 그리고아래와같은디렉토리내의 server-config.wsdd 파일을오픈하여배포된서비스의배포정가추가되어있는지확인한다. 물론이과정은위의배포된서비스리스트가성공적으로출력되는경우굳이확인하지않아도된다. 배포된서비스리스트가이파일을참조하기때문이다. 다음은 server-config.wsdd 파일의내용이다. %CATALINA_HOME% webapps axis WEB-INF <?xml version="1.0" encoding="utf-8"?> <deployment xmlns=" 15 / 40 페이지

16 xmlns:java=" <globalconfiguration> <parameter name="adminpassword" value="admin"/> <parameter name="sendmultirefs" value="true"/> 중략 </globalconfiguration> 중략 <service name="factservicebywsdd" provider="java:rpc"> <parameter name="allowedmethods" value="getfactorial getversion"/> <parameter name="classname" value="com.infravalley.ws.service.factservicebywsdd"/> </service> </deployment> ( 리스트 ) 업데이트된 server-config.wsdd 소스일부 마지막으로배포된서비스를기술하는 WSDL 파일을아래와같은 URL에서확인하면 XML 포맷으로된페이지가디스플레이된다. 클라이언트는이 WSDL 파일을매개로하여서비스를운용한다 서비스클라이언트구현및테스트앞에서구현한서비스를이용하는웹서비스클라이언트를작성해보자. 이코드는해당 endpoint 값만다를뿐대부분의코드가 JWS 방식을사용하는웹서비스와동일하다. package com.infravalley.ws.client; import org.apache.axis.axisfault; import org.apache.axis.client.service; import org.apache.axis.client.call; import org.apache.axis.encoding.xmltype; import javax.xml.rpc.parametermode; import javax.xml.namespace.qname; import java.net.url; public class FactClientByWSDD{ 16 / 40 페이지

17 public static void main(string[] args) throws Exception { if (args.length < 1) { System.out.println("usage: java FactClientByWSDD<num>"); System.exit(1); try { String strinparam = args[0]; int num = Integer.valueOf(strInParam).intValue(); // 웹서비스 access point 지정 String endpoint = " FactServiceByWSDD"; // 원격웹서비스에대한 Service 객체생성후, Call 객체생성 Service service = new Service(); Call call = (Call) service.createcall(); // 입출력인자정보및웹서비스 access point 를 Call 객체에바인딩 call.settargetendpointaddress( new URL(endpoint) ); call.setoperationname( new QName( "getfactorial") ); call.addparameter("num", XMLType.XSD_INT, ParameterMode.IN); call.setreturntype(xmltype.xsd_long); // 입력인자값을가지고웹서비스호출하여실행결과얻어옴 Long result = (Long)call.invoke( new Object[] { new Integer(num) ); // 결과값출력 System.out.println(num + "! = " + result ); catch (Exception e) { e.printstacktrace(); ( 리스트 ) 서비스클라이언트구현소스, FactClientByWSDD.java 17 / 40 페이지

18 위와같이작성한클라이언트소스를아래의명령을통해컴파일한다. javac d. FactClientByWSDD.java ( 그림 ) 컴파일수행화면 아래의명령을통해앞서작성한클라이언트를통해웹서비스를테스트한다. 패키지명을모두적어컴파일했으므로, 패키지루트의상위에서아래의명령을수행해야한다. java com.infravalley.ws.client.factclientbywsdd 6 다음은이에대한수행결과이다. ( 그림 ) 서비스호출및결과화면 18 / 40 페이지

19 4.WSDL 을이용한 Custom Deployment 이장에서는서비스클라이언트와서비스간의상호운용에관한일반적인절차에대해기술한다. 서비스상호운용의기본적인가이드라인은다음과같다. 가. 서비스인터페이스와서비스구현후컴파일나. 서비스구현을참조로 Java2WSDL를통한 WSDL 자동생성다. WSDL2Java를통해자동생성된 WSDL 파일로부터프록시코드들과 WSDD 파일들 (deploy.wsdd, undeploy.wsdd) 을자동생성한후컴파일라. AdminClient를통해 WSDD 파일을참조하여서비스를해당서버에디플로이마. 생성된프록시코드를참조하여서비스클라이언트를구현후컴파일바. 서비스호출 다음은위의절차를표현한그림이다. ( 그림 ) 서비스와서비스클라이언트간의서비스운용절차 19 / 40 페이지

20 여기서한가지짚고넘어갈점은 가 와 나 과정은만약 WSDL 파일을직접작성할수있다면생략될수있다. 이와관련한서비스운용절차는본문서의후반부에기술한다 서비스및서비스인터페이스구현다음은서비스인터페이스구현소스이다. package com.infravalley.ws.service; import java.rmi.remote; import java.rmi.remoteexception; public interface FactServiceByWSDLIF extends Remote { public long getfactorial(int n) throws RemoteException; public String getversion() throws RemoteException; ( 리스트 ) 서비스인터페이스구현, FactServiceByWSDLIF.java 다음은서비스구현소스이다. package com.infravalley.ws.service; public class FactServiceByWSDL implements FactServiceByWSDLIF { public long getfactorial(int n) { if (n <= 0) return 1; else return n * getfactorial(n - 1); public String getversion() { return "1.0.0"; ( 리스트 ) 서비스구현, FactServiceByWSDL.java 위의 2개의자바소스를다음과같은명령을통해컴파일을한다. 그리고아래그램은컴파일수행결과이다. 패키지구조에유의하기바란다. javac d. *.java 20 / 40 페이지

21 ( 그림 ) 컴파일결과화면 4.2.Java2WSDL 수행우선컴파일된클래스들의상위패키지로이동한다. 해당서비스로부터 WSDL 파일을생성하기위해다음과같은명령을수행한다. 아래의명령은이해를돕기위해줄바꿈을하였을뿐실제수행은한라인으로합쳐서수행한다. Java2WSDL o FactServiceByWSDL.wsdl -n urn:ws.infravalley.com -l com.infravalley.ws.service.factservicebywsdlif ( 그림 ) Java2WSDL 명령수행화면 위에서각각의옵션을살며보자면, o FactServiceByWSDL.wsdl 옵션은 WSDL 파일생성위치를나타내고, -l 옵셥은서비스클라이언트가접속할서비스 URL을미리지정한것이다. 추후이는 WSDL의 <address> 요소의 location 속성값으로매핑되며, 서비스클라이언트는서비스를사용하기위해해당 URL로만접근해야한다. 그리고 -n urn:ws.infravalley.com 옵션은 WSDL 에서타겟네임스페이스가되며프록시 21 / 40 페이지

22 코드생성시의패키지구조로써참조된다. 예를들면, 다음과같다. com infravalley ws 마지막의 com.infravalley.ws.service.factservicebywsdlif 해당서비스에대한인터페이스이다. 반드시구현시의모든패키지명을정확히기술해주어야한다. 다음그림은 Java2WSDL 의수행결과화면이다. ( 그림 ) Java2WSDL 명령수행결과 위의그림과같이생성된 WSDL(FactServiceByWSDL.wsdl) 파일의내용은다음과같다. 아래와같이 Java2WSDL 유틸을수행할때, 네임스페이스인자로넘겨준값이 targetnamespace 값으로자동매핑되었으며, porttype 값으로는넘겨준인터페이스클래스명이자동으로매핑되었다. 그리고넘겨준 URL 값은 <address> 엘리먼트의 location 속성값으로매핑되었다. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="urn:ws.infravalley.com" xmlns:apachesoap=" xmlns:impl="urn:ws.infravalley.com" xmlns:intf="urn:ws.infravalley.com" xmlns:soapenc=" xmlns:wsdl=" xmlns:wsdlsoap=" xmlns:xsd=" <wsdl:message name="getversionrequest"> </wsdl:message> 22 / 40 페이지

23 <wsdl:message name="getversionresponse"> <wsdl:part name="getversionreturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getfactorialresponse"> <wsdl:part name="getfactorialreturn" type="xsd:long"/> </wsdl:message> <wsdl:message name="getfactorialrequest"> <wsdl:part name="in0" type="xsd:int"/> </wsdl:message> <wsdl:porttype name="factservicebywsdlif"> <wsdl:operation name="getfactorial" parameterorder="in0"> <wsdl:input message="impl:getfactorialrequest" name="getfactorialrequest"/> <wsdl:output message="impl:getfactorialresponse" name="getfactorialresponse"/> </wsdl:operation> <wsdl:operation name="getversion"> <wsdl:input message="impl:getversionrequest" name="getversionrequest"/> <wsdl:output message="impl:getversionresponse" name="getversionresponse"/> </wsdl:operation> </wsdl:porttype> <wsdl:binding name="factservicebywsdlsoapbinding" type="impl:factservicebywsdlif"> <wsdlsoap:binding style="rpc" transport=" <wsdl:operation name="getfactorial"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getfactorialrequest"> 23 / 40 페이지

24 <wsdlsoap:body encodingstyle=" namespace="urn:ws.infravalley.com" use="encoded"/> </wsdl:input> <wsdl:output name="getfactorialresponse"> <wsdlsoap:body encodingstyle=" namespace="urn:ws.infravalley.com" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getversion" <wsdlsoap:operation soapaction=""/> <wsdl:input name="getversionrequest"> <wsdlsoap:body encodingstyle=" namespace="urn:ws.infravalley.com" use="encoded"/> </wsdl:input> <wsdl:output name="getversionresponse"> <wsdlsoap:body encodingstyle=" namespace="urn:ws.infravalley.com" use="encoded"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="factservicebywsdlifservice"> <wsdl:port binding="impl:factservicebywsdlsoapbinding" name="factservicebywsdl"> <wsdlsoap:address location=" </wsdl:port> </wsdl:service> </wsdl:definitions> ( 리스트 ) Java2WSDL 을통해생성된 FactServiceByWSDL.wsdl 24 / 40 페이지

25 4.3.WSDL2Java 수행 WSDL2Java 클래스를이용하여 WSDL 파일참조를통해 Java 파일들과 WSDD 파일들을생성한다. WSDL2Java 클래스는해당 WSDL 파일이정의한웹서비스에대한기술 (description) 정보를근거로서비스클라이언트가서비스측과상호운용을가능케하는 Stub 코드와 Skeleton 코드를생성하여주며, 이와동시에 deploy.wsdd와 undeploy.wsdd 파일을자동으로생성하여준다. 이클래스또한클래스패스를사용하여일일이실행을할경우번거로움이있으므로, 아래와같이배치파일을작성하여이용하자. 다음은 WSDL2Java.bat off rem WSDL -> Java rem 사용법 : wsdl2java <WSDL파일 > java org.apache.axis.wsdl.wsdl2java %1 %2 %3 %4 %5 %6 %7 %8 기존소스디렉토리의상위로 WSDL 파일을복사한후이동하여, 다음과같은 WSDL2Java 명령을수행한다. WSDL2Java -o. d Application -S true FactServiceByWSDL.wsdl ( 그림 ) WSDL2Java 명령수행화면 여기서 -o. 옵션은현재디렉토리에 WSDD 파일들과자바파일들을생성하며, -d Application 옵셥은운용범위를나타낸다. S true 옵션은 Skeleton 클래스를생성할것인지, 생성하지않을것인지를결정하는요소이다. 만약위와같이 true로설정할경우 SoapBindingSkeleton 클래스가별도로생성된다. 기본값인 false로설정되어있을경우, SoapBindingSkeleton 클래스의생성이생략되고서비스요청이 SoapBindingImpl 클래스로바로포워딩되어웹서비스를호출하게된다. 이외의상세한컴파일옵션은다음과같은명령을통해서확인이가능하다. 25 / 40 페이지

26 WSDL2Java -h 다음그림은 WSDL2Java 명령에대한수행결과화면이다. 이는자동생성된 WSDD 파일과프록시코드들을보여주고있다. ( 그림 ) WSDL2Java 명령수행결과화면 이제이렇게생성된프록시코드들을다음과같은명령을통해컴파일한다. ( 그림 ) 프록시코드컴파일결과화면 4.4. 자동생성된클래스간의관계분석본절에서는 WSDL2Java 유틸을통해자동생성된파일들의각각의기능과상호간의연관관계에대해설명과더불어, 각각의파일의기능과특징뿐만아니라각클래스들간의상호 26 / 40 페이지

27 운용절차에대해서는기술한다. 아래그림은위와같이 WSDL2Java 클래스를통해생성된클래스들간의일반적인관계를보여주고있다. 각각의클래스정보와클래스간의관계정보들은위에서작성된 WSDL를통해참조하게된다. ( 그림 ) WSDL 을참조로자동생성된클래스들간의관계 다음은생성된파일들의기능에대한요약사항이다. 위의그림에서표현된클래스간의관계와비교해가면서살펴보도록하자. 가.FactServiceByWSDLIF (Server-Side & Client-Side) - 웹서비스에대한인터페이스 - java.rmi.remote 상속받음. package com.infravalley.ws; public interface FactServiceByWSDLIF extends java.rmi.remote { public long getfactorial(int in0) throws java.rmi.remoteexception; public java.lang.string getversion() throws java.rmi.remoteexception; ( 리스트 ) FactServiceByWSDLIF.java 나.FactServiceByWSDLIFService (Client-Side) - 클라이언트측의서비스인터페이스 - javax.xml.rpc.service를상속받음. package com.infravalley.ws; public interface FactServiceByWSDLIFService extends javax.xml.rpc.service { public java.lang.string getfactservicebywsdladdress(); public FactServiceByWSDLIF getfactservicebywsdl() throws javax.xml.rpc.serviceexception; 27 / 40 페이지

28 public FactServiceIF getfactservicebywsdl( java.net.url portaddress) throws javax.xml.rpc.serviceexception; ( 리스트 ) FactServiceByWSDLIFService.java 다.FactServiceByWSDLIFServiceLocator (Client-Side) - 클라이언트측의서비스구현팩토리 (factory) - FactServiceByWSDLIFService 를구현, org.apache.axis.client.service를상속받음. package com.infravalley.ws; public class FactServiceByWSDLIFServiceLocator extends org.apache.axis.client.service implements FactServiceByWSDLIFService { private java.lang.string FactServiceByWSDL_address = " 생략 ( 리스트 ) FactServiceByWSDLIFServiceLocator.java 라.FactServiceByWSDLSoapBindingStub (Client-Side) - 웹서비스호출을위한클라이언트측의 Stub 클래스 - JAX-RPC 서비스와 Call 인터페이스를사용 - FactSServiceByWSDLIF를구현, org.apache.axis.wsdl.stub 상속받음. 마.FactServiceByWSDLSoapBindingSkeleton (Service-Side) - 클라이언트측의 Stub 클래스와상호운용되는서버측의 Skeleton 클래스 - WSDD의 Class의 name 속성값으로등록. 서버측에서서비스요청을최초수신함. - FactServiceByWSDLSoapBindingImpl 클래스내의서비스메소드를호출. 즉, 모든 call들을구현된서비스메소드로포워딩 - 만약 Skeleton 클래스를생성하지않았다면, Impl 클래스를직접호출 - WSDL2Java 명령수행시 -S true 옵션을추가하면, Skeleton 클래스생성기본값은 false 이다. - FactServiceByWSDLIF를구현, org.apache.axis.wsdl.skeleton 상속받음. 28 / 40 페이지

29 바.FactServiceByWSDLSoapBindingImpl (Service-Side) - FactServiceByWSDLIF를구현 - 실제웹서비스구현메소드. - 원본기본리턴값의주석을해제시키고, 서비스로직을추가 package com.infravalley.ws; public class FactServiceByWSDLSoapBindingImpl implements FactServiceByWSDLIF{ public long getfactorial(int in0) throws java.rmi.remoteexception { return -3; public java.lang.string getversion() throws java.rmi.remoteexception { return null; ( 리스트 ) FactServiceByWSDLSoapBindingImpl.java 아래그림은위에서제시한클래스들간의관계를기초로서비스클라이언트와서비스서버간의상호운용과정을표현한것이다. 클라이언트측의 Stub 클래스와서버측의 Skeleton 클래스가각각프록시매커니즘을통해통신한다. ( 그림 ) Stub 클래스와 Skeleton 클래스를통한서비스운용매커니즘 29 / 40 페이지

30 4.5. 서비스구현앞서 WSDL2Java로자동생성된자바파일중 FactServiceByWSDLSoapBindingImpl.java 파일을아래와같이수정한다. package com.infravalley.ws; public class FactServiceByWSDLSoapBindingImpl implements FactServiceByWSDLIF{ public java.lang.string getversion() throws java.rmi.remoteexception { // return null; // 원본코드 return "1.0.0"; public long getfactorial(int in0) throws java.rmi.remoteexception { // /return -3; // 원본코드 if (in0 <= 0) { return 1; else { return in0 * getfactorial(in0-1); ( 리스트 ) 수정된 FactServiceImplSoapBindingImpl.java 위와같이생성된자바파일들을아래의명령으로컴파일한다. javac -d. *.java 4.6. 서비스배포및 AdminClient 수행지금까지는모두로컬상에서수행한작업들이었으며, 어떠한서비스도 Tomcat 상의 Axis 상에배포되지않았다. 지금부터는실제서비스를배포하는작업을설명한다. 앞서컴파일한클래스파일들을다음과같은경로내에서버측 Skeleton 클래스와서비스메소드구현클래스, 서비스인터페이스클래스를패키지구조를포함하여모두복사한다. %CATALINA_HOME% webapps axis WEB-INF classes 30 / 40 페이지

31 ( 그림 ) 클래스파일들복사화면 다음은앞에서작성한웹서비스를 Axis상에배포하기위해자동생성된 deploy.wsdd 배포디스크립터의내용이다. <deployment xmlns=" xmlns:java=" <service name="factservicebywsdl" provider="java:rpc" style="rpc" use="encoded"> <parameter name="wsdltargetnamespace" value="urn:ws.infravalley.com"/> <parameter name="wsdlserviceelement" value="factservicebywsdlifservice"/> <parameter name="wsdlserviceport" value="factservicebywsdl"/> <parameter name="classname" value="com.infravalley.ws.factservicebywsdlsoapbindingskeleton"/> <parameter name="wsdlporttype" value="factservicebywsdlif"/> <parameter name="typemappingversion" value="1.2"/> <parameter name="allowedmethods" value="*"/> <parameter name="scope" value="application"/> </service> </deployment> ( 리스트 ) WSDL 참조를통해자동생성된 deploy.wsdd 다음그림은위의 deploy.wsdd 명령을수행한화면이다. 이는앞서작성한배치파일인 AdminClient.bat을통해수행된다. 물론이러한명령을수행하기전에반드시 Tomcat 상에서 Axis가실행되고있어야한다. 이때 deploy.wsdd 파일은로컬상에서의어디에위치해있든상관없으므로디폴트로생성된디렉토리에서아래의명령을수행해도되고, WSDD 파 31 / 40 페이지

32 일전용의디렉토리로복사한후아랭의명령을수행해도관계없다. AdminClient deploy.wsdd ( 그림 ) AdminClient 를통한서비스배포과정 성공적으로배포작업을완료되면, 로접속한다. 아래와같이해당서비스가등록되어있다면, 배포가성공한것이다. ( 그림 ) 서비스배포완료화면 지금까지웹서비스를운용하기위해서비스프로토타입을구현하고, 이를참조로 Java2WSDL을수행하여 WSDL 파일을생성해보았다. 그리고이렇게자동생성된 WSDL을참조하여 WSDL2Java 명령을수행함으로써서비스운용을위한프록시코드들과 WSDD 파일또한자동으로생성하여보았다. 이렇게자동생성된프록시코드들을컴파일한후, AdminClient 명령을통해서비스를 Tomcat 상의 Axis 엔진에배포하는과정까지살펴보았다. 때에따라서는해당웹서비스의 32 / 40 페이지

33 목적이다한경우이를배포해제할필요가있을것이다. 배포해제는의외로간단한작업이다. 다음은앞서배포된웹서비스를배포해제하는 undeploy.wsdd의내용이다. <undeployment xmlns=" <!-- Services from FactServiceByWSDLIFService WSDL service --> <service name="factservicebywsdl"/> </undeployment> ( 리스트 ) undeploy.wsdd 다음은배포된서비스를해제하는과정을보여주고있다. 이를위해 AdminClient를통해 undeploy.wsdd 파일을실행하고있다. 이러한모든일련의과정은 Axis의 AdminClient가자동으로수행한다. AdminClient undeploy.wsdd ( 그림 ) AdminClient 를통한서비스배포해제과정 다음은배포해제완료후의화면이다. ( 그림 ) 배포해제완료화면 33 / 40 페이지

34 4.7. 서비스클라이언트구현및테스트아래와같이클라이언트코드를작성한다. 본장에서예시로든클라이언트소스는앞서두장에서예시로든클라이언트소스와비교해훨씬간편하고간결하다. 서비스클라이언트와서비스간의상호운용에필요한대부분의코드가 Axis에서제공하는 WSDL2Java에의해자동생성된클래스파일들에구현되어있으므로아래와같은방식으로서비스클라이언트를작성하기만하면된다. 이외의웹서비스상호운용작업들은 Stub와 Skeleton이백그라운드에서담당한다. 아래는서비스클라이언트 (FactClientByWSDL.java) 를작성한다. package com.infravalley.ws.client; // WSDL2Java에의해자동생성된자바클래스 import import com.infravalley.ws.*; import java.rmi.remoteexception; import javax.xml.rpc.serviceexception; public class FactClientByWSDL { public static void main(string[] args) throws RemoteException, ServiceException { if (args.length < 1) { System.out.println("usage: java FactClientByWSDL <num>"); System.exit(1); try { String strinparam = args[0]; int num = Integer.valueOf(strInParam).intValue(); FactServiceByWSDLIFService locator = new FactServiceByWSDLIFServiceLocator(); FactServiceByWSDLIF stub = locator.getfactservicebywsdl(); long result = stub.getfactorial(num); // 웹서비스호출 System.out.println(num + "! = " + result); 34 / 40 페이지

35 catch (Exception e) { e.printstacktrace(); ( 리스트 ) FactClientByWSDL.java 앞서작성한 FactClientByWSDL.java 파일을아래와같이컴파일한다. javac -d. FactClientByWSDL.java 컴파일과정이성공적으로완료된후, 아래와같이실제 FactServiceByWSDL 서비스를호출하여결과값을얻어오는클라이언트를실행한다. 아래그림과같은메시지가나오면서비스클라이언트상에서서비스호출이성공한것이다. java com.infravalley.ws.client.factclientbywsdl 6 ( 그림 ) 서비스호출및결과화면 35 / 40 페이지

36 5.SOAP 요청 / 응답메시지확인하기 본장에서는 Axis에서제공하는 TCP 모니터링유틸을이용하여서비스와서비스클라이언트간의송 / 수신하는 SOAP 요청 / 응답메시지를확인하는방법에대해기술한다. 여기서이용되는예는 JWS를이용한서비스운용방식이며나머지방식도이를어렵지않게이용할수있을것이다. 웹서비스운용중에 TCPMonitor 유틸을이용하여서비스클라이언트측과서비스서버측이서로주고받는 SOAP 요청 / 응답메시지를인터셉트 (intercept) 한후, 이를확인하고자할경우유용하다. 사용시편의를위해아래와같이배치파일을사용하도록하자. 배치파일을이용하지않을경우명령을실행하는데상세클래스패스까지모두적어줘야하는불편사항이있다. 아래와같이내용을작성한후, tcpmon.bat 와같은파일명으로배치파일을생성한다. 이렇게작성된 tcpmon.bat 배치파일은 %JAVA_HOME% bin off rem SOAP TCP Monitoring Tool rem 사용법 : tcpmon [listenport targethost targetport] java org.apache.axis.utils.tcpmon %1 %2 %3 물론위와같은과정의전제는해당 Axis와관련한 API 아카이브파일 (.jar) 이모두 %JAVA_HOME% jre lib ext 디렉토리에이미등록되어있다는것이다. SOAP 메시지를확인하기위해이유틸을이용하고자할경우는반드시, 소스코드상의 endpoint URL의포트를 listenport로변경하고, 재컴파일후이를이용해야한다. 물론, 정상운용시에는원래포트로복원한후이용해야한다. String endpoint = " 지금까지언급한 tcpmon.bat 배치파일의사용예는다음과같다. 아래와같은명령을사용하기전에미리 Tomcat을구동시킨다. tcpmon 8082 localhost 8080 클라이언트측에서서버측으로 SOAP 요청메시지를전송시 tcpmon이 listenport를통해이를먼저캣취하여사용자화면에디스플레이한후, 서버측의 targethost의 targetport로 SOAP 요청메시지를중계 (relay) 한다. 서비스서버측에서해당웹서비스를수행한후이에대한결과를다시 SOAP 응답메시지형태로리턴할때 tcpmon이먼저캣취하여사용자 36 / 40 페이지

37 화면에디스플레이한후서비스를호출한측으로 SOAP 응답메시지를중계 (relay) 한다. 아래그림은지금까지설명한 tcpmon 의수행절차를그림으로표현한것이다. ( 그림 ) tcpmon 수행절차 SOAP 메시지를캐치한화면은다음과같다. ( 그림 ) SOAP 메시지캐치화면 37 / 40 페이지

38 다음리스트는 tcpmon이캐치한서비스클라이언트에서서비스서버로의 SOAP 요청메시지는아래와같다. 여기서네임스페이스 ns1은앞서클라이언트코딩시작성했던, call.setoperationname( new QName( "getfactorial") ); 위와같이 QName을생성하면서인자로넘겨준네임스페이스인자값을참조한다. POST /axis/factservicebywsdl.jws HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.4 Host: localhost:8082 Cache-Control: no-cache Pragma: no-cache SOAPAction: "" Content-Length: 608 <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv= xmlns:xsd=" xmlns:xsi=" <soapenv:body> <ns1:getfactorial soapenv:encodingstyle= xmlns:ns1=" <num href="#id0"/> </ns1:getfactorial> <multiref id="id0" soapenc:root="0" xsi:type="xsd:int" soapenv:encodingstyle=" xmlns:soapenc=" </soapenv:body> </soapenv:envelope> 다음리스트는 tcpmon이캐치한서비스서버측에서서비스클라이언트로리턴하는 SOAP 응답메시지는다음과같다. HTTP/ OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=FDCBC87B171619B9B000AC142AE6E95D; Path=/axis 38 / 40 페이지

39 Content-Type: text/xml;charset=utf-8 Date: Thu, 27 Jul :10:03 GMT Connection: close <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv=" xmlns:xsd=" xmlns:xsi=" <soapenv:body> <ns1:getfactorialresponse xmlns:ns1= soapenv:encodingstyle=" > <getfactorialreturn xsi:type="xsd:long">720</getfactorialreturn> </ns1:getfactorialresponse> </soapenv:body> </soapenv:envelope> 39 / 40 페이지

40 6.References [1] Developing Java Web Services, 이창재역, 사이텍미디어, p.158 [2] Apache Web Service Project Axis, [3] Developing web services with Eclipse and open source, drc/slide_presentations/websvcseclipseos/index.jsp 40 / 40 페이지

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

Microsoft PowerPoint - RMI.ppt

Microsoft PowerPoint - RMI.ppt ( 분산통신실습 ) RMI RMI 익히기 1. 분산환경에서동작하는 message-passing을이용한 boundedbuffer 해법프로그램을실행해보세요. 소스코드 : ftp://211.119.245.153 -> os -> OSJavaSources -> ch15 -> rmi http://marvel el.incheon.ac.kr의 Information Unix

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

교육2 ? 그림

교육2 ? 그림 Interstage 5 Apworks EJB Application Internet Revision History Edition Date Author Reviewed by Remarks 1 2002/10/11 2 2003/05/19 3 2003/06/18 EJB 4 2003/09/25 Apworks5.1 [ Stateless Session Bean ] ApworksJava,

More information

chapter1,2.doc

chapter1,2.doc JavaServer Pages Version 08-alpha copyright2001 B l u e N o t e all rights reserved http://jspboolpaecom vesion08-alpha, UML (?) part1part2 Part1 part2 part1 JSP Chapter2 ( ) Part 1 chapter 1 JavaServer

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345]) Chapter 17. RMI Mingyu Lim Collaborative Computing Systems Lab, School of Internet & Multimedia Engineering Konkuk University, Seoul, Korea 학습목표 RMI란 RMI 구조 RMI는어떻게동작하는가 로컬객체를원격객체로변경하기 RMI를이용한계산기애플리케이션

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

자바-11장N'1-502

자바-11장N'1-502 C h a p t e r 11 java.net.,,., (TCP/IP) (UDP/IP).,. 1 ISO OSI 7 1977 (ISO, International Standards Organization) (OSI, Open Systems Interconnection). 6 1983 X.200. OSI 7 [ 11-1] 7. 1 (Physical Layer),

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

2장 변수와 프로시저 작성하기

2장  변수와 프로시저 작성하기 Chapter. RequestDispatcher 활용 요청재지정이란? RequestDispatcher 활용 요청재지정구현예제 Chapter.9 : RequestDispatcher 활용 1. 요청재지정이란? 클라이언트로부터요청받은 Servlet 프로그램이응답을하지않고다른자원에수행흐름을넘겨다른자원의처리결과를대신응답하는것또는다른자원의수행결과를포함하여응답하는것을요청재지정이라고한다.

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Chap12

Chap12 12 12Java RMI 121 RMI 2 121 RMI 3 - RMI, CORBA 121 RMI RMI RMI (remote object) 4 - ( ) UnicastRemoteObject, 121 RMI 5 class A - class B - ( ) class A a() class Bb() 121 RMI 6 RMI / 121 RMI RMI 1 2 ( 7)

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

MasoJava4_Dongbin.PDF

MasoJava4_Dongbin.PDF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: MasoJava4_Dongbindoc Revision number: Issued by: < > SI, dbin@handysoftcokr

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 25 장네트워크프로그래밍 이번장에서학습할내용 네트워크프로그래밍의개요 URL 클래스 TCP를이용한통신 TCP를이용한서버제작 TCP를이용한클라이언트제작 UDP 를이용한통신 자바를이용하여서 TCP/IP 통신을이용하는응응프로그램을작성하여봅시다. 서버와클라이언트 서버 (Server): 사용자들에게서비스를제공하는컴퓨터 클라이언트 (Client):

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

No Slide Title

No Slide Title J2EE J2EE(Java 2 Enterprise Edition) (Web Services) :,, SOAP: Simple Object Access Protocol WSDL: Web Service Description Language UDDI: Universal Discovery, Description & Integration 4. (XML Protocol

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

JavaGeneralProgramming.PDF

JavaGeneralProgramming.PDF , Java General Programming from Yongwoo s Park 1 , Java General Programming from Yongwoo s Park 2 , Java General Programming from Yongwoo s Park 3 < 1> (Java) ( 95/98/NT,, ) API , Java General Programming

More information

JMF3_심빈구.PDF

JMF3_심빈구.PDF JMF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: Revision number: Issued by: JMF3_ doc Issue Date:

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 배효철 th1g@nate.com 1 목차 표준입출력 파일입출력 2 표준입출력 표준입력은키보드로입력하는것, 주로 Scanner 클래스를사용. 표준출력은화면에출력하는메소드를사용하는데대표적으로 System.out.printf( ) 를사용 3 표준입출력 표준출력 : System.out.printlf() 4 표준입출력 Example 01 public static void

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

ThisJava ..

ThisJava .. 자바언어에정확한타입을추가한 ThisJava 소개 나현익, 류석영 프로그래밍언어연구실 KAIST 2014 년 1 월 14 일 나현익, 류석영 자바언어에정확한타입을추가한 ThisJava 소개 1/29 APLAS 2013 나현익, 류석영 자바 언어에 정확한 타입을 추가한 ThisJava 소개 2/29 실제로부딪힌문제 자바스크립트프로그램분석을위한요약도메인 나현익,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lab 4 ADT Design 클래스로정의됨. 모든객체들은힙영역에할당됨. 캡슐화 (Encapsulation) : Data representation + Operation 정보은닉 (Information Hiding) : Opertion부분은가려져있고, 사용자가 operation으로만사용가능해야함. 클래스정의의형태 public class Person { private

More information

14-Servlet

14-Servlet JAVA Programming Language Servlet (GenericServlet) HTTP (HttpServlet) 2 (1)? CGI 3 (2) http://jakarta.apache.org JSDK(Java Servlet Development Kit) 4 (3) CGI CGI(Common Gateway Interface) /,,, Client Server

More information

JDK이클립스

JDK이클립스 JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 9 장생성자와접근제어 이번장에서학습할내용 생성자 정적변수 정적메소드 접근제어 this 클래스간의관계 객체가생성될때초기화를담당하는생성자에대하여살펴봅니다. 생성자 생성자 (contructor): 객체가생성될때에필드에게초기값을제공하고필요한초기화절차를실행하는메소드 생성자의예 class Car { private String color; // 색상

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 19 장배치관리자 이번장에서학습할내용 배치관리자의개요 배치관리자의사용 FlowLayout BorderLayout GridLayout BoxLayout CardLayout 절대위치로배치 컨테이너안에서컴포넌트를배치하는방법에대하여살펴봅시다. 배치관리자 (layout manager) 컨테이너안의각컴포넌트의위치와크기를결정하는작업 [3/70] 상당히다르게보인다.

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå 기초통계프로그래밍 클래스, 객체, 변수, 메소드 hmkang@hallym.ac.kr 금융정보통계학과 강희모 ( 금융정보통계학과 ) 기초통계프로그래밍 1 / 26 자바구성파일 소스파일 소스파일 : 사용자가직접에디터에입력하는파일로자바프로그램언어가제공하는형식으로제작 소스파일의확장자는.java 임 컴파일 : javac 명령어를이용하여프로그래머가만든소스파일을컴파일하여실행파일.class

More information

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아 LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml

More information

mytalk

mytalk 한국정보보호학회소프트웨어보안연구회 총괄책임자 취약점분석팀 안준선 ( 항공대 ) 도경구 ( 한양대 ) 도구개발팀도경구 ( 한양대 ) 시큐어코딩팀 오세만 ( 동국대 ) 전체적인 그림 IL Rules Flowgraph Generator Flowgraph Analyzer 흐름그래프 생성기 흐름그래프 분석기 O parser 중간언어 O 파서 RDL

More information

No Slide Title

No Slide Title 상속 이충기 명지대학교컴퓨터공학과 상속 Q: 건설회사는기존아파트와조금다르거나추가적인특징들을가진새아파트를지을때어떻게하는가? A: 2 상속 상속 (inheritance) 은클래스들을연관시키는자연스럽고계층적인방법이다. 상속은객체지향프로그래밍의가장중요한개념중의하나이다. 상속은 은 이다 라는관계 (is-a relationship) 를나타낸다. 이관계를적용하여클래스들을상하관계로연결하는것이상속이다.

More information

슬라이드 1

슬라이드 1 - 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

JMF2_심빈구.PDF

JMF2_심빈구.PDF JMF JSTORM http://wwwjstormpekr Issued by: < > Document Information Document title: Document file name: Revision number: Issued by: JMF2_ doc Issue Date: Status: < > raica@nownurinet

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");

More information

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f… Command JSTORM http://www.jstorm.pe.kr Command Issued by: < > Revision: Document Information Document title: Command Document file name: Revision number: Issued by: Issue

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

슬라이드 1

슬라이드 1 NeoDeveloper 설치가이드 차례 1. 환경 3 2. 설치 3 2.1 웹서버설치 3 Tomcat 7 3 JDK 1.6 3 2.2 NeoDeveloper 설치 3 Neo Developer 서버구성 3 Demo용 User Application 구성 4 Neo Developer 서버 Data File 4 Client 개발 Tool 설치 4 3. 설정 5 3.1

More information

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1 표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1 Index 1. 표준프레임워크 EGOVCI 팩키지설치... 3 1.1 개요... 3 1.2 EGOVCI 압축풀기... 3 1.3 EGOVCI 시스템구성... 3 1.4 CI 시스템구동 (START/STOP)... 4 2. NEXUS 설정정보... 6 2.1 NEXUS 서버구동

More information

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker 15 ODBC 및 JDBC 설명서 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information