环境系统:Windows xp home
Axis-1_4
WebLogic 9.2
jdk150_04
MyEclipse 5
做个简单的HelloWorld
1.配置WebLogic如图
2.创建一个Web Project 起名example
这里的Context root URL可以自己修改,但前面一定要有“/”。
3.创建Package 起名 com.services和HelloWorld类
编写HelloWorld.java
package com.services;
public class HelloWorld {
public String sayhello(String message){
System.out.println("sayhello"+message);
return "Here is the message: '" + message + "'";
}
}
4.配置Axis
a.导入Axis运行组件包到WEB-INF/LIB目录下
axis.jar
jaxrpc.jar
saaj.jar
commons-logging.jar
commons-discovery.jar
wsdl4j.jar
这些包是AXIS运行所必须的
b.用Axis中的web.xml替换web应用程序WEB-INF目录下的同名文件。
这个xml文件是用来控制WEB行为的。所以用Axis开发,一定要用Axis的web.xml。
c.添加server-config.wsdd文件来初始化SOAP消息管道
server-config.wsdd如下:
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns=http://xml.apache.org/axis/wsdd/ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="disablePrettyXML" value="true"/>
<parameter name="adminPassword" value="admin"/>
<parameter name="attachments.Directory"
value="E:/Tomcat 5.0/webapps/axis/WEB-INF/attachments"/>
<parameter name="dotNetSoapEncFix" value="true"/>
<parameter name="enableNamespacePrefixOptimization" value="false"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session"/>
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request"/>
<parameter name="extension" value=".jwr"/>
</handler>
</requestFlow>
</globalConfiguration>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<service name="AdminService" provider="java:MSG">
<parameter name="allowedMethods" value="AdminService"/>
<parameter name="enableRemoteAdmin" value="false"/>
<parameter name="className" value="org.apache.axis.utils.Admin"/>
<namespace>http://xml.apache.org/axis/wsdd/</namespace>
</service>
<service name="Version" provider="java:RPC">
<parameter name="allowedMethods" value="getVersion"/>
<parameter name="className" value="org.apache.axis.Version"/>
</service>
<service name="getServices" provider="java:RPC">
<parameter name="allowedMethods" value="sayhello"/>
<parameter name="className" value="com.services.HelloWorld"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
<parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
<parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
<parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>
<parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>
<parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
<parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
</transport>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
</deployment>
创建server-config.wsdd一般有两种种方法
1, 如果已经有wsdd文件,直接修改就可以了,修改黑体部分。
2, 如果没有也没关系,axis下的AdminClient能够自动创建合适的wsdd文件,具体方法如下:
首先,写一个deploy.wsdd文件
Deploy.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java = "http://xml.apache.org/axis/wsdd/providers/java">
<handler type = "java:org.apache.axis.handlers.http.URLMapper" name = "URLMapper"/>
<service name = "getServices" provider = "java:RPC">
<parameter name = "className" value = "com.services.HelloWorld"/>
<parameter name = "allowedMethods" value = "sayhello"/>
</service>
</deployment
对文档中的黑体部分进行修改,以便生成合适你的server-cofig.wsdd文件。保存并放在axis的web-inf目录下
然后启动TOMCAT,如果不启动TOMCAT,就无法生成server-config.wsdd,会抛出connect refused.异常
在命令行中输入:
Java org.apache.axis.client.AdminClient deploy.wsdd
提示成功,然后就会在WEB-INF目录下看到server-config.wsdd文件了
然后,把生成的server-config.wsdd文件放到WEB-INF目录下
5.部署到WEBLOGIC上
启动应用服务器,自动部署
这里也可以选择在console平台手工部署下,或者用Ant(weblogic.ant.taskdefs.management.WLDeploy)任务来实现部署。
启动成功
6.生成WSDL文件
输入http://localhost:7001(端口)/example(Context root URL在创建工程时输入的)/services(生成WSDL)/getServices(服务名,在server-config.wsdd文件中能找到,是可以手动修改的)?wsdl
生成WSDL,说明服务发布成功了。
Axis提供了JAVA2WSDL工具来生成WSDL
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions
targetNamespace=http://localhost:7001/example/services/getServices
xmlns:apachesoap=http://xml.apache.org/xml-soap
xmlns:impl=http://localhost:7001/example/services/getServices
xmlns:intf=http://localhost:7001/example/services/getServices
xmlns:soapenc=http://schemas.xmlsoap.org/soap/encoding/
xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/
xmlns:wsdlsoap=http://schemas.xmlsoap.org/wsdl/soap/
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006 (06:55:48 PDT)-->
<wsdl:message name="sayhelloRequest">
<wsdl:part name="message" type="xsd:string" />
</wsdl:message>
<wsdl:message name="sayhelloResponse">
<wsdl:part name="sayhelloReturn" type="xsd:string" />
</wsdl:message>
<wsdl:portType name="HelloWorld">
<wsdl:operation name="sayhello" parameterOrder="message">
<wsdl:input message="impl:sayhelloRequest" name="sayhelloRequest" />
<wsdl:output message="impl:sayhelloResponse" name="sayhelloResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="getServicesSoapBinding" type="impl:HelloWorld">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="sayhello">
<wsdlsoap:operation soapAction="" />
<wsdl:input name="sayhelloRequest">
<wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://services.com"
use="encoded" />
</wsdl:input>
<wsdl:output name="sayhelloResponse">
<wsdlsoap:body
encodingStyle=http://schemas.xmlsoap.org/soap/encoding/
namespace="http://localhost:7001/example/services/getServices"
use="encoded" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloWorldService">
<wsdl:port binding="impl:getServicesSoapBinding" name="getServices">
<wsdlsoap:address location="http://localhost:7001/example/services/getServices" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
在看一下Weblogic console,选择deploments
从中可以看到,_appsdir_example_dir(autodeployed)
处于Active(激活)状态,服务发布成功。
7.写个客户端测试:
HelloClient.java(com.client包下)
启动服务器,运行客户端
运行结果
在服务器日志中能够看到:
Sayhellohello hugh,welcome!
在客户端端能够看到:
Here’s the message:’hello hugh,welcome!’