当前位置:早雪网网络学院编程文档Java → 升级到 JDK 5.0 Update 1 定制部署 WebServices - Axis 终于正常了!

升级到 JDK 5.0 Update 1 定制部署 WebServices - Axis 终于正常了!

减小字体 增大字体 作者:未知  来源:supcode.com收集整理  发布时间:2005-6-29 18:42:15

升级到 JDK 5.0 Update 1 定制部署 WebServices - Axis 终于正常了!

JDK 1.4.x 是正常的!
但是 JDK 5.0 定制部署 WebServices - Axis 时,执行命令行:
java org.apache.axis.client.AdminClient deploy.wsdd
总不正常!
升级到 Update 1:
java version "1.5.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)
终于又可以了!
相关下载:

JDK 5.0 Update 1:
http://dlc.sun.com/jdk/jdk-1_5_0_01-windows-i586-p.exe

Resin 2.1.16 (推荐,因为相对于 Tomcat 小巧)
http://www.caucho.com/download/resin-2.1.16.zip

Tomcat 5.5.7
http://apache.justdn.org/jakarta/tomcat-5/v5.5.7/bin/jakarta-tomcat-5.5.7.zip

Apache WebServices - Axis v1.1: (June 16, 2003)
http://apache.freelamp.com/ws/axis/1_1/axis-1_1.zip
解压后,将 axis-1_1\webapps\ 目录下的 axis 目录复制到 Resin 或 Tomcat 的 webapps 目录下!

JavaMail API 1.3.2 FCS:
http://192.18.97.52/ECom/EComTicketServlet/BEGIN0C28A9F726724B9DD60F1DA518A6C32A/-2147483648/755528103/1/540782/540770/755528103/2ts+/westCoastFSEND/javamail-1_3_2-oth-JPR/javamail-1_3_2-oth-JPR:1/javamail-1_3_2.zip

JavaBeans(TM) Activation Framework 1.0.2:
http://192.18.97.131/ECom/EComTicketServlet/BEGIN145B389A284A19AC4F88E80C4CFBA0D3/-2147483648/755539779/1/359918/359906/755539779/2ts+/westCoastFSEND/7017-jaf-1.0.2-oth-JPR/7017-jaf-1.0.2-oth-JPR:1/jaf-1_0_2-upd.zip

XML Security Version 1.2 of the Java library:
http://xml.apache.org/security/dist/java-library/xml-security-bin-1_2_0.zip

清单:
activation.jar
axis-ant.jar
axis.jar
commons-discovery.jar
commons-logging-api.jar
commons-logging.jar
jaxrpc.jar
log4j-1.2.8.jar
mail.jar
saaj.jar
stylebook-1.0-b3_xalan-2.jar
wsdl4j.jar
xalan.jar
xercesImpl.jar
xml-apis.jar
xmlParserAPIs.jar
xmlsec.jar
xmlsecSamples.jar
xmlsecTests.jar

Class1.java 文件保存到 \webapps\axis\WEB-INF\classes\Class1.java
执行: javac Class1.java 编译成 Class1.class:
public class Class1
{
 public static void main()
 {
  System.out.println("Hello World!");
  //System.out.println(new jwsClass1().SayHelloTo("世界!"));
 }
 public String SayHelloTo(String Who)
 {
  return "你好: " + Who;
 }
 public String SayHelloToo(String Who)
 {
  return "你好: " + Who;
 }
}

http://localhost:1080/axis/services/Class1Service?wsdl
另存为: xx.wsdl
deploy.wsdd (undeploy.wsdd) 文件,可由命令行:

java org.apache.axis.wsdl.WSDL2Java --skeletonDeploy true xx.wsdl
生成:
deploy.wsdd (undeploy.wsdd) 部署文件
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <service name="Class1Service" provider="java:RPC">
  <parameter name="className" value="Class1"/>
  <parameter name="allowedMethods" value="*"/>
 </service>
</deployment>

客户端:

(a)从 WSDL 文件生成客户端存根 (stub) 代码,服务端框架 (skeleton) 代码以及 WSDL 中的数据类型文件(生成与之对应的 Java 代码)

1. deploy.wsdd : MyService 服务的部署描述文件
2. MyService.java : MyService 服务的接口文件
3. MyServiceService.java : 获得 MyService 服务的接口文件
4. MyServiceServiceLocator.java : 实现 MyServiceService 接口
5. MyServiceSoapBindingImpl.java : 实现 MyService 接口,应向其中补充业务逻辑
6. MyServiceSoapBindingSkeleton.java : MyService 服务的服务端框架代码,实现 MyService, org.apache.axis.wsdl.Skeleton 接口
7. MyServiceSoapBindingStub.java :MyService 服务的客户端存根代码,实现 MyService 接口
8. undeploy.wsdd : 注销 MyService 服务的部署描述文件

(b)
动态调用 WebServices :
参阅: 王咏刚
wsCaller:Web Service通用客户端和测试工具
http://www.contextfree.net/wangyg/c/wsCaller/wsCaller.html

import org.apache.axis.Constants;
import org.apache.axis.encoding.ser.SimpleDeserializer;
import org.apache.axis.wsdl.gen.Parser;
import org.apache.axis.wsdl.symbolTable.*;

import javax.wsdl.*;
//import javax.wsdl.extensions.soap.SOAPAddress;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.encoding.Deserializer;
import javax.xml.rpc.encoding.DeserializerFactory;

import java.util.*;

//import localhost.axis.services;
// Web Service Dynamic Invoker

public class DynamicInvoker
{
 private Parser wsdlParser = null;
 private Map services = null;

 public DynamicInvoker(String wsdlURL) throws Exception
 {
  wsdlParser = new Parser();
  wsdlParser.run(wsdlURL);
  services = enumSymTabEntry(ServiceEntry.class);
 }

 public Map invoke(String serviceName,
       String portName,
       String operationName,
       Vector parameterValues) throws Exception
 {
  Vector inputs = new Vector();
  String returnName = null;

  ServiceEntry serviceEntry = (ServiceEntry) services.get(serviceName);
  Service service = serviceEntry.getService();
  org.apache.axis.client.Service clientService = new
    org.apache.axis.client.Service(wsdlParser, service.getQName());

  Call call = clientService.createCall(QName.valueOf(portName), QName.valueOf(operationName));
  ((org.apache.axis.client.Call) call).setTimeout(new Integer(15 * 1000));

  BindingEntry bindingEntry = getBindingEntry(serviceName, portName);
  Operation o = getOperation(bindingEntry, operationName);
  Parameters parameters = bindingEntry.getParameters(o);

  if (parameters.returnParam != null)
  {
   //QName returnType = org.apache.axis.wsdl.toJava.Utils.getXSIType(parameters.returnPa

[1] [2] [3]  下一页


Tags:升级,JDK,Update,定制,部署,WebServices,Axis,终于,正常
[数据载入中...] [返回上一页] [打 印]