web service 概念

Coeus 2006-05-21 12:52:32
看了两天web services,实在是不懂什么
soap wsdl uddi这些到底是做什么的?
不能运行吗?
只是用xml来描述
...全文
261 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
didoleo 2006-05-22
  • 打赏
  • 举报
回复
举个小例子,那肯定要属"HelloWorld"了. :)

做个服务: 在服务端:

package com.didoleo.axis.server;

/**
*
* @author didoleo
* @axis.service scope = "Request" urn = "TestService"
*/

public class TestService {
/**
* @axis.method
*/

public String test(String name) {
return "Hello, " + name;
}

}
}
/////////////////////////////////////
用wsdl描述上面的服务:我用的是axis,所文件名为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="adminPassword" value="admin"/>
<parameter name="enableNamespacePrefixOptimization" value="false"/>
<parameter name="dotNetSoapEncFix" value="true"/>
<parameter name="disablePrettyXML" value="true"/>
<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"/>
<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="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>


<!--注意这里 begin-->

<service name="TestService" provider="java:RPC">
<parameter name="allowedMethods" value="test "/>
<parameter name="scope" value="Request"/>
<parameter name="className" value="com.didoleo.axis.server.TestService"/>
</service>
<!--注意这里 end-->



<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:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
</transport>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
</deployment>

//////////////////////

客户端程序:
package com.didoleo.axis.client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class TestClient {
public static void main(String[] args) {
try {
String endpoint = "http://localhost:8001/myaxis/services/TestService";

Service service = new Service();
Call call = (Call) service.createCall();

call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://didoleo.org/", "test"));

String ret = (String) call.invoke(new Object[] { "didoleo!" });

System.out.println("Sent 'Hello!', got '" + ret + "'");
} catch (Exception e) {
System.err.println(e.toString());
}

}
}



/////总结
也是一种远程方法的调用(RPC),但不通于EJB
baiyun210 2006-05-22
  • 打赏
  • 举报
回复
路过
Coeus 2006-05-22
  • 打赏
  • 举报
回复
谢谢楼上的
有这样的hello world就很好了
Coeus 2006-05-21
  • 打赏
  • 举报
回复
我还是不太懂
哪位给说明一下
或者给一个小例子
usherlight 2006-05-21
  • 打赏
  • 举报
回复
Web Services是自包含的、模块化的应用程序,它可以在网络(通常 为Web)中被描述、发布、查找以及调用.
SOAP和TCP一样是一种协议,
WSDL描述Web服务的公共接口。是为描述Web服务 发布的XML格式。
UDDI:Universal Description, Discovery, and Integration,是一个基于网络的分布式目录,列举各自的信息。在概念上类似于黄页号簿。

由此可见:只有WebService是可以调用执行的。
其他的不可以执行。

67,513

社区成员

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

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