WebService课程



一、
WebService

调用给定位置WebServiceClient端代码:

1 import org.apache.axis.client.Call;
2 import org.apache.axis.client.Service;
3 import javax.xml.namespace.QName;
4   
5 public class TestClient {
 public static void main(String [] args) {
7     try {
8       String endpoint =
9                       "http://nagoya.apache.org:5049/axis/services/echo";
10  
11      Service  service = new Service();
12      Call  call = (Call) service.createCall();
13  
14      call.setTargetEndpointAddress( new java.net.URL(endpoint) );
15      call.setOperationName(new QName("http://soapinterop.org/", "echoString"));
16  
17      String ret = (String) call.invoke( new Object[] { "Hello!" } );
18  
19      System.out.println("Sent 'Hello!', got '" + ret + "'");
20    } catch (Exception e) {
21      System.err.println(e.toString());
22    }
23  }
24 }

 

SOAP request 内容:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <ns1:echoString xmlns:ns1="http://soapinterop.org/">
      <arg0 xsi:type="xsd:string">Hello!</arg0>
    </ns1:echoString>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

发布WebService

1jws文件

2、通过AdminClient类向Application Server部署

二、AXISTOMCAT

1、  为测试webservice准备axis配置:

*         完成从java类文件生成wsdl,对应的命令如下:

java -classpath .;%AXISCLASSPATH%; org.apache.axis.wsdl.Java2WSDL -o TestService.wsdl -l"http://172.16.87.18:8000/axis/services/ TestService " -n "http://172.16.87.18:8000/axis/services/ TestService " -p"com.zzxy.test. TestService" "http://172.16.87.18:8000/axis/services/TestService" com.zzxy.test. TestService

*         对生成wsdl文件运行WSDL2Java生成新的接口、serviceservicelocaterstubskeleton等辅助类文件,包括部署(卸载)文件deploy.wsdd  undeploy.wsdd。对应的命令如下:

java -classpath .;%AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java -o ../src -d Session -s -S true -N http://172.16.87.18:8000/axis/services/service com.zzxy.TestService TestService.wsdl

 

*         编译生成的java文件:

*         部署:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp:// 172.16.87.18:8000/axis/services/AdminService deploy.wsdd

 

动态报表的ant例子

<?xml version="1.0" encoding="gbk"?>

 

<project name="axis" default="make" basedir=".">

 

   <!--设置部署axis web-service运行的属性及类包-->

   <property name="axis.home" value="D:/axis"/>

   <property name="axis.gensrcdir" value="${src.dir}/"/>

   <property name="webservice.name" value="xybbwebservice"/>

   <property name="local.wsdl" value="${axis.gensrcdir}/${webservice.name}.wsdl"/>

   <property name="axis.server" value="172.16.87.18"/>

   <property name="axis.port" value="7000"/>

   <property name="axis.name" value="axis"/>

   <property name="targetNameSpace" value="http://${axis.server}:${axis.port}/${axis.name}/service/${webservice.name}"/>

   <!--axis-ant.jarproperties文件中得到所有的ant task任务列表-->

 

   <taskdef resource="axis-tasks.properties" classpathref="axis.classpath" />

 

   <!--java类文件生成需要的部署描述文件-->

   <target name="wsdl">

     <axis-java2wsdl output="${local.wsdl}" location="http://${axis.server}:${axis.port}/${axis.name}/services/${webservice.name}"

       namespace="${targetNameSpace}" classname="com.xinyuan.dtbb.Xybb">

       <mapping namespace="${targetNameSpace}" package="com.xinyuan.dtbb.webservice"/>

     </axis-java2wsdl>

   </target>

 

   <!--wsdl文件生成需要的java文件-->

   <target name="java2">

     <axis-wsdl2java output="${axis.gensrcdir}" testcase="true" verbose="true" url="${local.wsdl}" serverside ="true"

       deployscope ="Session">

       <mapping namespace="${targetNameSpace}" package="com.xinyuan.dtbb.webservices" />

     </axis-wsdl2java>

   </target>

 

   <!--编译axis wsdl2java生成的Helper文件-->

   <target name="ws-compile" depends="">

      <!--Compile Java source files-->

      <javac srcdir="${axis.gensrcdir}" destdir="${compile.outdir}" debug="on" encoding="GBK">

        <classpath>

          <path refid="classpath"/>

          <path refid="axis.classpath"/>

        </classpath>

        <include name="**/*.java"/>

        <exclude name="**/*TestCase.java"/>

      </javac>

   </target>

 

   <!--部署axis webservice-->

   <target name="ws-deploy">

     <axis-admin port="${axis.port}" hostname="${axis.server}" failοnerrοr="true"

       servletpath="/axis/servlet/AxisServlet" debug="true" xmlfile="${local.wsdl}"/>

   </target>

</project>

 

二、OC4J

    需要用OC4J专用的函数按照一定的要求进行配置

 

EJB部署为WebService的配置文件

<web-service>

 

  <!-- More of the same boilerplate... -->

  <display-name>Session Bean as a Web Service</display-name>

  <description>

    Exposing the stateless Session Bean com.xinyuan.dtbb.xybbservice as a Web Service under the endpoint:  /xybb/xybbWS.

 

    This will result in the generation of ws-xybb.ear, which can be deployed in OC4J.

  </description>

 

  <destination-path>./ws-xybb.ear</destination-path>

  <temporary-directory>./tmp</temporary-directory>

  <context>/ws-xybb_web</context>

 

  <!-- This service is based on a stateless session bean. -->

  <stateless-session-ejb-service>

 

    <!-- As before: the Web Service URL under the servlet context -->

    <uri>/xybbWS</uri>

 

    <!-- Location and name of the session bean that is to be deployed as a Web Service -->

    <path>./xybbservice.jar</path>

    <ejb-name>XybbService</ejb-name>

  </stateless-session-ejb-service>

 

  <!-- define additional Web Services as required -->

 

</web-service>

 

部署的ant脚本:

<?xml version="1.0" encoding="gbk"?>

 

<project name="ws-xybb" default="make" basedir=".">

 

   <!--设置部署oc4j web-service运行的属性及类包-->

   <property name="oc4j.home" value="D:/jdev9052"/>

   <property name="config.name" value="ws-xybb"/>

   <property name="src.dir" value="../src"/>

   <property name="ws-oc4j-src.dir" value="${src.dir}/webservice/oc4j"/>

   <property name="build.dir" value="../build"/>

   <property name="ws-oc4j-build.dir" value="${build.dir}/webservice/oc4j"/>

   <property name="ejb.name" value="xybbservice"/>

   <property name="app.deploy.name" value="ws-xybb"/>

   <property name="web.deploy.name" value="ws-xybb_web"/>

 

   <property name="oc4j.host" value="172.16.87.18"/>

   <property name="ormi.port" value="23791"/>

   <property name="deploy.name" value="23791"/>

   <property name="admin.user" value="admin"/>

   <property name="admin.passwd" value="123456"/>

 

   <target name="init">

     <delete file="${ws-oc4j-build.dir}/${app.deploy.name}.ear"/>

     <delete file="${ws-oc4j-src.dir}/${app.deploy.name}.ear"/>

     <copy file="${build.dir}/${ejb.name}.jar" todir="${ws-oc4j-src.dir}"/>

   </target>

 

   <!--xml配置文件生成需要的ear文件(详细配置信息在该xml文件中)-->

   <target name="generate" depends="init">

     <java jar="${oc4j.home}/webservices/lib/WebServicesAssembler.jar" dir="${ws-oc4j-src.dir}" fork="true">

       <arg line="-config ${config.name}.xml"/>

     </java>

     <copy file="${ws-oc4j-src.dir}/${app.deploy.name}.ear" todir="${ws-oc4j-build.dir}/"/>

  </target>

 

   <!--把生成的ear文件部署到oc4j容器-->

   <target name="deploy" depends="generate">

     <java jar="${oc4j.home}/j2ee/home/admin.jar" dir="${ws-oc4j-src.dir}" fork="true">

       <arg line="ormi://${oc4j.host}:${oc4j.port} ${admin.user} ${admin.passwd} -deploy -file ${app.deploy.name}.ear -deploymentName ${app.deploy.name}"/>

     </java>

   </target>

 

   <!--将部署oc4j webservice绑定到webservice的配置文件内指定的uri之上-->

   <target name="bind" depends="deploy">

     <java jar="${oc4j.home}/j2ee/home/admin.jar" dir="${ws-oc4j-src.dir}" fork="true">

       <arg line="ormi://${oc4j.host}:${oc4j.port} ${admin.user} ${admin.passwd} -bindWebApp ${app.deploy.name} ${web.deploy.name} http-web-site /${web.deploy.name}"/>

     </java>

   </target>

 

   <target name="all" depends="bind"/>

</project>

三、JBOSS

    需要jboss-net.sar,在all的配置中,标准的axis部署出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值