현재 제휴 업무를 하고 있는데, 특정 제휴사에서는 SOAP 통신을 이용해 상품연동을 하고 있어 SOAP 통신에 대해 알아보고, Client 서비스를 제공받는 쪽에서 어떻게 통신을 하는지 알아볼 것이다.
프로젝트 시작
영화진흥위원회 의 OPEN API를 이용해서 데이터를 가져오는 부분을 이용해 개발을 진행할 것이다.
wsdl2java
WSDL을 JAVA로 변환하기에서 자세한 내용을 알 수 있다. 이번 프로젝트에서는 axis2-1.7.9 version 1.7.9를 이용하여 변환했다.
$./wsdl2java.sh-u-urihttp://www.kobis.or.kr/kobisopenapi/webservice/soap/boxoffice\?wsdlUsingAXIS2_HOME:/Users/dh0023/Downloads/teste/axis2-1.7.9UsingJAVA_HOME:/Library/Java/HomeRetrievingdocumentat'http://www.kobis.or.kr/kobisopenapi/webservice/soap/boxoffice?wsdl'.Retrieving document at 'http://www.kobis.or.kr:80/kobisopenapi/webservice/soap/boxoffice?wsdl=BoxOfficeAPIService.wsdl', relative to 'http://www.kobis.or.kr/kobisopenapi/webservice/soap/boxoffice?wsdl'.
Retrievingdocumentat'http://www.kobis.or.kr/kobisopenapi/webservice/soap/boxoffice?wsdl'.Retrieving document at 'http://www.kobis.or.kr:80/kobisopenapi/webservice/soap/boxoffice?wsdl=BoxOfficeAPIService.wsdl', relative to 'http://www.kobis.or.kr/kobisopenapi/webservice/soap/boxoffice?wsdl'.
만약 pom.xml을 제대로 설정하지 않으면 아래와 같이 java.lang.ClassNotFoundException: 오류가 발생한다.
java.lang.ClassNotFoundException: org.apache.axis2.transport.http.CommonsHTTPTransportSender
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.axis2.util.Loader.loadClass(Loader.java:261)
at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:711)
at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:123)
at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:629)
at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210)
at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:151)
at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:143)
at kobisopenapi.apiservice.server.boxoffice.service.BoxOfficeAPIServiceImplServiceStub.<init>(BoxOfficeAPIServiceImplServiceStub.java:44)
at kobisopenapi.apiservice.server.boxoffice.service.BoxOfficeAPIServiceImplServiceStub.<init>(BoxOfficeAPIServiceImplServiceStub.java:30)
at kobisopenapi.apiservice.server.boxoffice.service.BoxOfficeAPIServiceImplServiceStub.<init>(BoxOfficeAPIServiceImplServiceStub.java:76)
at kobisopenapi.apiservice.server.boxoffice.service.BoxOfficeAPIServiceImplServiceStub.<init>(BoxOfficeAPIServiceImplServiceStub.java:68)
at com.example.movie.MovieApplication.main(MovieApplication.java:30)
org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender
Disconnected from the target VM, address: '127.0.0.1:63082', transport: 'socket'