weblogic9 开发 web services

原创文章,鼓励转载,请务必注明出处,作者:李佳

前段时间一直在研究axis2实现web services,今天,研究下weblogic 实现web services,实际看起来也比较简单,只是一些对ant脚本的编写,费话不多说,把我的实现例子分享给大家。

1.准备工作
下载开发环境:
eclipse3.2,weblogic9.2,apache-ant-1.6.5

2.创建项目目录webserviceWeblogic9
建立source folder:src 和 output/clientclasses
建立lib目录,在其中加入jaxrpc.jar

3.编写实现 Web Service 的 JWS 文件
package com.services;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import weblogic.jws.WLHttpTransport;

@WebService(name = "HelloWorldPortType", serviceName = "HelloWorldService")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
@WLHttpTransport(contextPath = "HelloWorldEar", serviceUri = "HelloWorldService", portName = "HelloWorldPort")
public class HelloWorldEar {
 
 @WebMethod()
 public String sayHelloWorld(String message) {
  System.out.println("sayHelloWorld:" + message);
  return "Here is the message: '" + message + "'";
 }
}

@WebService批注指定部署webservice的必须信息,这里需要在class_path中加入C:/apps_pub/bea/weblogic92/server/lib/weblogic.jar

4.编写build.xml脚本文件
<project name="webservices-hello_world" default="all">
 <property name="wls.username" value="weblogic" />
 <property name="wls.password" value="weblogic" />
 <property name="wls.hostname" value="127.0.0.1" />
 <property name="wls.port" value="7001" />
 <property name="bea.root" value="C:/apps_pub/bea/weblogic92" />
 <property name="weblogic-jar" value="${bea.root}/server/lib">
 </property>
 <property name="wls.server.name" value="AdminServer" />
 <property name="ear.deployed.name" value="HelloWorldEar" />
 <property name="example-output" value="output" />
 <property name="ear-dir" value="${example-output}/HelloWorldEar" />
 <property name="clientclass-dir" value="${example-output}/clientclasses" />
 <path id="client.class.path">
  <pathelement path="${clientclass-dir}" />
  <pathelement path="${java.class.path}" />
  <pathelement path="bin"/>
  <pathelement path="lib/jaxrpc.jar"/>
  <fileset dir="${weblogic-jar}">
   <include name="weblogic.jar" />
     </fileset>
 </path>

 <path id="class.path">
  <pathelement path="${java.class.path}" />
  <pathelement path="lib/jaxrpc.jar" />
  <fileset dir="${weblogic-jar}">
   <include name="weblogic.jar" />
  </fileset>
 </path>

 <taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" classpathref="class.path" />
 <taskdef name="clientgen" classname="weblogic.wsee.tools.anttasks.ClientGenTask" classpathref="class.path" />
 <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy" classpathref="class.path" />
 <target name="all" depends="clean,build-service,deploy,client" />
 <target name="clean" depends="undeploy">
  <delete dir="${example-output}" />
 </target>
 <target name="build-service">
  <jwsc srcdir="src" destdir="${ear-dir}" classpathref="class.path">
   <module>
    <jws file="com/services/HelloWorldEar.java" />
   </module>
  </jwsc>
 </target>
 <target name="deploy">
  <wldeploy action="deploy" name="${ear.deployed.name}" source="${ear-dir}" user="${wls.username}" password="${wls.password}" verbose="true" adminurl="t3://${wls.hostname}:${wls.port}" targets="${wls.server.name}" />
 </target>
 <target name="undeploy">
  <wldeploy action="undeploy" name="${ear.deployed.name}" failοnerrοr="false" user="${wls.username}" password="${wls.password}" verbose="true" adminurl="t3://${wls.hostname}:${wls.port}" targets="${wls.server.name}" />
 </target>
 <target name="client">
  <clientgen wsdl="http://${wls.hostname}:${wls.port}/HelloWorldEar/HelloWorldService?WSDL" destDir="${clientclass-dir}" packageName="com.clientgenerate" classpathref="class.path" _fcksavedurl=""class.path"" _fcksavedurl=""class.path"" _fcksavedurl=""class.path"" _fcksavedurl=""class.path"" _fcksavedurl=""class.path"" _fcksavedurl=""class.path"" _fcksavedurl=""class.path"" _fcksavedurl=""class.path"" />
  <javac srcdir="${clientclass-dir}" destdir="${clientclass-dir}" includes="**/*.java" classpathref="class.path" />
  <javac srcdir="src" destdir="${clientclass-dir}" includes="com/clients/**/*.java" classpathref="class.path" />
 </target>
 <target name="run">
  <java classname="com.clients.ClientTest" fork="true" failοnerrοr="true">
   <classpath refid="client.class.path" />
   <arg line="http://${wls.hostname}:${wls.port}/HelloWorldEar/HelloWorldService" />
  </java>
 </target>
</project>

5.编译build.xml
首先需要启动weblogic服务,我一切都是使用默认的设置,hostname=127.0.0.1,port=7001,username=weblogic,password=weblogic
在命令行中输入ant,注意,第一次编译时候会有错误,因为在生成代理类的时候,调用服务的客户类还没生成(仔细读一下build.xml就明白了)。等生成完全代理后,会在项目目录webserviceWeblogic9中生成output目录及一些文件,这些是调用web services 的代理。

6.编写客户端调用程序
package com.clients;

import com.clientgenerate.HelloWorldPortType;
import com.clientgenerate.HelloWorldService;
import com.clientgenerate.HelloWorldService_Impl;

public class ClientTest {

// public static String webserviceWeblogic9 = "http://127.0.0.1:7001/HelloWorldEar/HelloWorldService";
 public static void main(String[] args) throws Exception {
  
//  HelloWorldService service = new HelloWorldService_Impl(webserviceWeblogic9 + "?WSDL");
  HelloWorldService service = new HelloWorldService_Impl(args[0] + "?WSDL");
        HelloWorldPortType port = service.getHelloWorldPort();
        String str = port.sayHelloWorld("Hello World!!!");
        System.out.println(str);
 }
}

7.再次编译build.xml
在命令行中输入ant,编译成功。

8.察看web服务
进入weblogic console,会在Deployments处发现部署的服务HelloWorldEar
打开ie,访问http://127.0.0.1:7001/HelloWorldEar/HelloWorldService?wsdl,可以看见web服务提供的方法。

9.调用web服务
在命令行中输入ant run,能够看见返回的结果。

总结:
1.以上的方式是直接把服务部署到weblogic上去,也可以写ant脚本,打成war包部署,其实都大同小异 ,主要的工作还是在写ant脚本上。
2.个人感觉这种方式不如axis2简单,因为毕竟写ant脚本比较烦躁。但是,weblogic对axis2的支持并不那么优秀,我在tomcat上部署好的简单服务可以移植到weblogic上,但是加入wss4j.jar的安全支持后就不能移植到weblogic上了,现在还在处理这个问题。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值