Apache Axis �ɂ����

�쐬 2002/10/11

����������{��ǂ�ł����Apache Axis�̋L�����ڂ��Ă܂����B J2EE1.4(���o�[�W����)�ł́AWeb�T�[�r�X���d�l�ɓ��� �炵�����A������ƒ��ׂƂ������Ƃ������ƂŁAApache Axis�̃y�[�W�� �`���Ă݂܂����B�g�b�v�y�[�W������ƁANEWS (October 7, 2002) : Axis 1.0 is now available! �Ƃ̂��ƁB����͏{����`�A�Ƃ������Ƃł��������G���Ă݂܂����B

Apache Axis�Ƃ́H

Apache Axis�Ƃ�Java�ŏ����ꂽSOAP�����̈�‚ł� (SOAP�Ƃ����̂�Web�T�[�r�X�Ŏg����ʐM�v���g�R���ł��B XML�ŏ�����Ă���.NET��Java�ł����ʐM�”\�ł��B�ꉞ)�B Apache SOAP2.x�̌�p�ɂ�����AApache SOAP�ɔ�� JAX-RPC�AWSDL�ւ̑Ή��ȂǑ啝�@�\�lj�����Ă��܂��B �‚��łɁA�p�[�T�[��SAX�ŏ���������A���Ȃ荂���ɂȂ��������ł��B �͂��߂Ă�Web�T�[�r�X�A�Ƃ������ꍇ��(�@�\�I�A���O�I��) ��r�I���S���Ďg����c�[���Ȃ̂ł͂Ȃ����ƁB�B�B�B�v���܂��B

����

�����ł́A�ȉ��̊‹��Řb�������߂܂��B�‹��ɂ���ẮA�ʓr�K�v��jar(XML�p�[�T�Ƃ�)�����邩������܂���B

JDK 1.4
Tomcat 4.0.4

http://xml.apache.org/axis/
���xml-axis-10.zip���_�E�����[�h���܂��B

�W�J�����A�[�J�C�u�̒���webapps/axis��Web�A�v���P�[�V������ ���`�ɂȂ��Ă��܂��B��������̂܂�Web�A�v���P�[�V�����Ƃ��Ďg���܂��B

axis�t�H���_��%TOMCAT_HOME%/webapps�ȉ��ɃR�s�[���܂��B

TOMCAT���N�����A�u���E�U��http://localhost:8080/axis�ɃA�N�Z�X���܂��B

���j���[����Validate���N���b�N���܂��B

Validate�ł́A�K�v��JAR���F���ł��邩�ǂ����̃`�F�b�N���s���܂��B �����̊‹��ł́A "xmlsec.jar�����‚���Ȃ��̂�XML Security���T�|�[�g����܂���" �Ƃ̌x�����o�܂������A�K�{�ł͂Ȃ��̂ŁA�������Đi�݂܂����B

�܂��A���̃y�[�W��Note�ŁA"Tomcat 4.x�ł́Ajava.*�Ajavax.*�ł͂��܂�N���X��JAR��CATALINA_HOME/commons/lib�ɒu���Ȃ���΂����Ȃ�"�Ə����Ă���̂ŁA jaxrpc.jar��TOMCAT��common/lib�̉��ɃR�s�[���܂����B

Java Web Service���g���Ă̊ȒP�f�v���C

�ȒP��Web�T�[�r�X�̃f�v���C���s�����@������B .java�t�@�C�����g���q��.jws�ɕς��AAxis Web�A�v���P�[�V������ �R���e�L�X�g���[�g�ɒu�������B �ŏ���Web�T�[�r�X�̃��N�G�X�g���������Ƃ��ɁA�R���p�C������A Web�T�[�r�X�����s����܂��B Web�T�[�r�X�ŁAJSP�݂����Ȃ��̂ł��傤���H

Web�T�[�r�X�̍쐬

�ŏ��Ƃ������ƂŁAHello.java���쐬���܂��B

public class Hello{
  public String sayHello(){
    System.out.println("call sayHello");
    return "hello!";
  }
}

Web�T�[�r�X��publish

�쐬����.java���E�F�u�T�[�r�X�Ƃ���publish���܂��B

�쐬����Hello.java�̊g���q��.jws�ɂ��āAAxis Web�A�v���P�[�V�����̃��[�g�ɃR�s�[���܂��B

�u���E�U���J���Ĉȉ���URL�փA�N�Z�X���܂��B

http://localhost:8080/axis/Hello.jws?wsdl

�����\�����ۂ����̂��o���Ă܂��ˁB

Web�T�[�r�X�̗��p

�N���C�A���g����Hello�E�F�u�T�[�r�X�𗘗p���܂��B WSDL����Java�v���L�V�R�[�h�𐶐����āA����𗘗p������@�� ����̂ł����A����͌�ɂ��āA�����ł́A �`�}�`�}�ƃ��\�b�h���Ȃǂ��w�肵�Ď��s���Ă݂܂��傤�B

�N���C�A���g�����s����ɂ́A�N���C�A���g���� Axis��jar���N���X�p�X�ɒʂ��K�v������܂��B ��邱�Ƃ͒P���Ȃ�ł����A���������ԈႢ�₷����ƂȂ̂ŁA ���������ɂ���΂�܂��傤�B

�ȉ��͊‹��ݒ�̃o�b�`�t�@�C���̗�ł��B �W�J�����A�[�J�C�u��C:\apps\xml-axis-10�ɂ���Ƃ��āA lib�ȉ��̂��ׂĂ�jar�ɃN���X�p�X��ʂ��܂��B �Ȃ��A��Ŏg���e��c�[���̗��p�ɂ�servlet.jar���K�v�݂����Ȃ̂ŁA �����Œlj����Ă����܂��B

set AXIS_LIB=C:\apps\xml-axis-10\lib

set CLASSPATH=.
set CLASSPATH=%CLASSPATH%;%AXIS_LIB%\axis.jar
set CLASSPATH=%CLASSPATH%;%AXIS_LIB%\axis-ant.jar
set CLASSPATH=%CLASSPATH%;%AXIS_LIb%\commons-discovery.jar
set CLASSPATH=%CLASSPATH%;%AXIS_LIB%\commons-logging.jar
set CLASSPATH=%CLASSPATH%;%AXIS_LIB%\jaxrpc.jar
set CLASSPATH=%CLASSPATH%;%AXIS_LIB%\log4j-1.2.4.jar
set CLASSPATH=%CLASSPATH%;%AXIS_LIB%\saaj.jar
set CLASSPATH=%CLASSPATH%;%AXIS_LIB%\wsdl4j.jar

set CLASSPATH=%CLASSPATH%;C:\apps\jakarta-tomcat-4.0.4\common\lib\servlet.jar

�N���C�A���g�R�[�h���쐬���܂��B

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;

public class HelloClient {
   public static void main(String [] args) throws Exception{

       String endpoint = "http://localhost:8080/axis/Hello.jws";

       Service  service = new Service();
       Call     call    = (Call) service.createCall();

       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
       call.setOperationName(new QName("http://localhost:8080/", "sayHello"));
       String ret = (String) call.invoke( new Object[0] );

       System.out.println(ret);
   }
}

�R���p�C�����܂��B �N���X�p�X���ʂ��ĂȂ��ƁA�G���[���o�܂��B

�N���C�A���g�����s���܂��B

C:\apps\xml-axis-10\test>java HelloClient
hello!

�������Ahello!���ĕԂ��Ă��܂����B

WSDD���g���Ẵf�v���C

WSDD(Web Service Deployment Descriptor)�t�@�C�����g���ăf�v���C ���s���܂��B JWS���g�����@�͊ȒP�ł����A�Z�ʂ������܂���B WSDD�t�@�C�����g�����ƂŁA�f�v���C�ݒ���J�X�^�}�C�Y���邱�Ƃ��ł��܂��B

Web�T�[�r�X�̍쐬

������hello�T�[�r�X��������̂ŁA���x��echo�T�[�r�X�����܂��B

public class Echo{
  public String sayEcho(String message){
    System.out.println("called sayEcho : message=" + message);
    return message;
  }
}

�R���p�C�����܂��B

�R���p�C�����ꂽEcho.class�t�@�C����Axis Web�A�v���P�[�V�������F���ł���ꏊ �ɒu���܂��B�Ⴆ�΁A�ȉ���Echo.class���R�s�[���܂��B

webapps/axis/WEB-INF/classes/

Web�T�[�r�X��publish

WSDD�t�@�C�����쐬���܂��B�ȉ��̓��e�̃t�@�C����deploy.wsdd�Ƃ��ĕۑ����܂��B

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  <service name="echo" provider="java:RPC">
   <parameter name="className" value="Echo"/>
   <parameter name="allowedMethods" value="*"/>
  </service>

</deployment>

�f�v���C�����s���܂��B java org.apache.axis.client.AdminClient���g���܂��B �����͍������wsdd�t�@�C���̃p�X�ł��B

C:\apps\xml-axis-10\test>java org.apache.axis.client.AdminClient deploy.wsdd
- Processing file deploy.wsdd
- Done processing

�u���E�U���J���Ĉȉ���URL�փA�N�Z�X���܂��B

http://localhost:8080/axis/services/echo?wsdl

WSDL���\������Ă܂��ˁB

Axis Web�A�v���P�[�V�����̃��C�����j���[����View��I�����A �f�v���C��Web�T�[�r�X�ꗗ������ƁAecho�T�[�r�X���o�^����Ă��邱�Ƃ��A �킩��܂��B

Web�T�[�r�X�̗��p

�����ł�WDSL����java�v���L�V�R�[�h�������������āA �v���L�V�R�[�h�𗘗p���ăN���C�A���g���쐬���Ă݂܂��傤�B

���������ɂ� org.apache.axis.wsdl.WSDL2Java���g���܂��B

C:\apps\xml-axis-10\test>java org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/services/echo?wsdl

������WSDL��URL���w�肵�āAWSDL2Java�����s����ƁA�f�t�H���g�ŁA localhost�p�b�P�[�W�̒��ɁAecho�T�[�r�X��Java�R�[�h���쐬����܂��B

�N���C�A���g�R�[�h���쐬���܂��B

import localhost.Echo;//Echo��localhost.Echo���Փ˂���ꍇ�̑Ώ�
import localhost.*;

public class EchoClient{

  public static void main(String[] args) throws Exception{
    EchoService locator = new EchoServiceLocator();
    Echo echo = locator.getecho();
    String s = echo.sayEcho("hoge");
    System.out.println(s);
  }
}
hello�T�[�r�X�̂Ƃ��ƈقȂ�A ���ʂ�Java�N���X&�C���^�[�t�F�C�X�𑀍�ł��Ă܂��ˁB hello�T�[�r�X�̂Ƃ��C�`�C�`���������e�́A�������ꂽ�v���L�V(�X�^�u) �R�[�h�ɏ�����Ă��܂��B

���s���܂��B

C:\apps\xml-axis-10\test>java EchoClient
hoge

���s����܂����I

�����܂ł̊��z

��L�菇�ł͈ꏏ�ɂȂ��Ă��܂��Ă܂����A �p�u���b�V���[(Web�T�[�r�X�̍쐬��)�ƃN���C�A���g(Web�T�[�r�X�̗��p��) ���s�����Ƃ𕪂��čl����ƁA�������₷���ł��傤�B

�p�u���b�V���[���s���̂��AWeb�T�[�r�X�̃N���X������āAdeploy�A publish���āA�Ƃ�����Ƃł��B

�N���C�A���g���s���̂́Apublish���ꂽWSDL�����ƂɁA Java�C���^�[�t�F�C�X���‚���A �N���C�A���g�R�[�h�������A���s���邱�Ƃł��B

���z�Ƃ��ẮA����������Ƃ߂�ǂ������ł��ˁB �p�u���b�V���[��Hello���邾���Ȃ̂ɁAWSDL������ăf�v���C���Ȃ���Ȃ��B JWS�̎d�g�݂͂߂�ǂ������ጸ�̂��߂̖ʔ������݂��Ǝv���܂��B �ł��A���ɂ�WSDL�g��Ȃ�publish���@�A
WebService.export(Hello.class);
�Ƃ��ł��Ă����������A�Ƃ��v���܂����B

�N���C�A���g��AXIS�̃N���X�p�X��ʂ��āA�X�^�u������āA���s�B�B�B �N���C�A���g�ɕK�v��jar��JDK�ɑg�ݍ��܂��ƃN���X�p�X�̐ݒ�Ȃǂ� �s�v�ɂȂ邩������Ȃ����ǁB�B�B �N���C�A���g�R�[�h�̍쐬�ɃC���^�[�t�F�C�X���K���K�v�Ȃ̂ŁA WSDL2Java�͂͂����Ȃ����B�B�B
import http://localhost:8080/axis/services/hello?wsdl
�Ƃ������āA�X�^�u�Ȃ񂩂͓��I�����ɂ��Ē�����Ɗy�Ȃ�ł����A�������B

Web�T�[�r�X�⏕�@�\�̂���֗���IDE�g�����Ă��Ƃ�����B

�Q�l

Apache Axis

����J2EE�V�X�e���J��

Introduction to Axis(����)


TOP