升级到 JDK 5.0 Update 1 定制部署 WebServices - Axis 终于正常了!
升级到 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 目录下!
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
Tags:升级,JDK,Update,定制,部署,WebServices,Axis,终于,正常

