web service 高手请指点

明月撒 2005-10-10 09:09:39
小妹是web service新手,请问各位给个学习的模式?看wsdl规范有必要吗?
...全文
172 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyoversky 2005-10-10
  • 打赏
  • 举报
回复
完全弄懂规范实在没有必要
最好从sample入手
navy7148 2005-10-10
  • 打赏
  • 举报
回复
up
wannaberer 2005-10-10
  • 打赏
  • 举报
回复
AXIS实现web服务配置部署简要流程
1:编写服务器端接口,并在<webapp>/WEB-INF/classes下编译。
javac –d . *.java

2:在%APP_HOME%/webapp/WEB-INF目录下创建server-config.wsdd(AXIS配置文件,所有web服务都要在该文件中注册)文件。形如:
<?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="adminPassword" value="admin"/>
<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="axis.sendMinimizedElements" value="true"/>
<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="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

<service name="login" provider="java:RPC">
<!-- 服务类名 -->
<parameter name="className" value="com.test.service.loginService"/>
<!-- 允许访问所有方法 -->
<parameter name="allowedMethods" value="*"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
</deployment>

注:server-config.wsdd文件也可以通过编写deploy.wsdd文件生成,具体方法为,在%APP_HOME%/webapp/WEB-INF目录下创建deploy.wsdd文件(SOAP发布描述文件),形如:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="login" provider="java:RPC">
<parameter name="className" value="LoginService"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
然后将相应服务器端class编译后在命令行输入:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
将在当前目录下生成server-config.wsdd文件。

完成以上操作后,可在浏览器中通过http://localhost:8080/axis/services/login?wsdl 访问该服务。

3:JAVA客户端实现:
可以通过AXIS中的org.apache.axis.wsdl.WSDL2Java类将已发布的web服务进行客户端实例化,具体命令为:在%APP_HOME%/webapp/WEB-INF目录下命令行输入:
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java url

命令执行后会在本地当前目录下生成以url为模版的package目录层次结构(如:local.axis.service.*),该目录中针对每个服务器端接口会自动生成4个本地类。
其中:
inferface LoginService在客户端本地定义服务器接口的映射。
interface LoginServiceService定义了用于获得web服务的getter方法。
class LoginServiceServiceLocator具体实现LoginServiceService接口,保存了服务器的url等相关信息。
class LoginSoapBindingStub 具体实现LoginService,负责服务器交互。

(部署了web服务之后,如果接口不变而url发生改变,可以直接在客户端更新LoginServiceServiceLocator中有关服务器地址的相关信息,或者用配置文件的形式修改)
编译以上几个类时需要axis.jar,jaxrpc.jar两个包,命令为:
javac -classpath lib\axis.jar;lib\jaxrpc.jar –d . *.java
编译成class后可以通过jar命令打包作为接口部署在客户端。

客户端测试例程:
如果通过java应用程序形式进行测试,命令为:
java -Djava.ext.dirs=lib -cp . package.class
wannaberer 2005-10-10
  • 打赏
  • 举报
回复
http://www.java8.com/JavaLead/frame/2017.html
看看这个,会有所帮助
ianok 2005-10-10
  • 打赏
  • 举报
回复
up

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧