java script调用Web Service,

急要,在线等!
jiezhi(風依舊) 于 2004-11-12 14:18:25
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/webservice/overview.asp

http://www.codeproject.com/cs/webservices/webservicecallback.asp?target=web|service

http://www.cnblogs.com/daview/archive/2004/05/06/8373.aspx
chnama(*****) 于 2004-11-12 16:06:48
http://www.tiantiansoft.com/bbs/dispbbs.asp?boardID=40&ID=62626&page=1
Jeff20040819(最爱Delphi,C#——苦练内功中) 于 2004-11-20 8:09:11
学习 接分
litp(天道酬勤) 于 2004-11-22 17:59:46
以下代码实现了在客户端用java script调用Web Service,通过对Web Service:TimeService中GetTime()方法的调用,在客户端显示服务器当前时间,并且以1秒为间隔自动刷新。

TimeService: GetTime()

//Return time on server
[WebMethod]
public string GetTime()
{
return DateTime.Now.ToString();
}

客户端显示的页面WebForm1:


<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript">
function timer(){
service.useService("http://localhost/TimeWebService/TimeService.asmx?wsdl","TimeService");
service.TimeService.callService(callback,"GetTime");
setTimeout("timer()",1000);

}

function callback(res){
if (!res.error)
time.innerText=res.value
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" οnlοad="timer()">
<div id="service" style="BEHAVIOR:url(webservice.htc)"></div>
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; WIDTH: 440px; POSITION: absolute; TOP: 8px; HEIGHT: 50px"
cellSpacing="1" cellPadding="1" width="440" border="0">
<TR>
<TD style="WIDTH: 83px">
<asp:Label id="Label1" runat="server">Current time:</asp:Label></TD>
<TD><span id="time"></span></TD>
</TR>

</TABLE>
</form>
</body>
</HTML>


其中引入一个名为webservice.htc的文件,它包含了使用java script来调用Web Service的两个方法:useService和callService。wbservice.htc可以通过以下地址下载:
http://msdn.microsoft.com/workshop/author/webservice/webservice.htc

其实,web service本质上就是http,xml,所以完全可以自己来实现调用Web Service,有兴趣的话可以参考一下webservice.htc中的_invoke()函数:

var szAction = oM.soapAction;
if (szAction != null && szAction.length > 0)
oXmlHttp.xmlHttp.setRequestHeader("SOAPAction", '"' szAction '"');
oXmlHttp.xmlHttp.setRequestHeader("Content-Type", "text/xml");
var sNS = ' xmlns=""';
for (var ns in oS.ns)
{
var nsuri = oS.ns[ns];
if (ns == "" || nsuri == "")
continue;
sNS = " xmlns:" ns '="' nsuri '"';
}
var szHeader = encodeHeader(oS, oM, oCall);
var szPayload = "<?xml version='1.0'?>/n<SOAP-ENV:Envelope"
(oM.es == null ? '' : (' SOAP-ENV:encodingStyle="' oM.es '"'))
sNS ">/n"
szHeader
'<SOAP-ENV:Body>'
szParams "</SOAP-ENV:Body>/n"
"</SOAP-ENV:Envelope>/n";
if (co.async)
{
oCall.oXmlHttp = oXmlHttp;
oXmlHttp.xmlHttp.onreadystatechange = function() {getResult(oCall);};
try
{
oXmlHttp.xmlHttp.send(szPayload);
}
catch(e)
{
return postError(oCall, 5);
}
return oCall.id;
}
try
{
oXmlHttp.xmlHttp.send(szPayload);
}
catch(e)
{
return returnError(oCall, 5);
}
if (oXmlHttp.xmlHttp.responseXML.parseError.errorCode != 0)
{
_errUnknownS.raw = oXmlHttp.xmlHttp.responseText;
return returnError(oCall, 4);
}
var r;
try
{
r = processResult(oCall, oXmlHttp.xmlHttp.responseXML.documentElement);
}
catch (e)
{
return returnError(oCall, 7);
}
return r; 


 
### Java中集成和使用Deepspeed 目前,DeepSpeed 主要针对 Python 和 PyTorch 生态进行了优化和支持[^1]。由于 DeepSpeed 的核心功能依赖于 PyTorch 库以及其内部实现细节,在 Java 中直接调用 DeepSpeed 并不是一个常见的做法。 然而,如果希望在基于 Java 的项目里利用到 DeepSpeed 提供的能力,则可以考虑通过以下几种间接方式来达成目标: #### 方法一:借助 JNI 或 JNA 调用 C++/Python 接口 可以通过编写 C++ 扩展并将其封装成动态链接库(DLL),再由 Java 使用JNI (Java Native Interface) 来加载这些 DLL 文件从而访问底层 API;或者采用更简单的方案——JNA (Java Native Access), 它允许开发者无需额外编译就能快速绑定本地函数[^2]。 对于这种方法而言,具体操作如下所示: - 需要在 Python 环境下安装好带有 GPU 支持版本的 PyTorch 及 DeepSpeed; - 编写一段能够初始化模型训练过程并将参数传递给 DeepSpeed 的 Python 代码片段; - 将上述逻辑打包为可执行文件或共享对象(.so/.dll),以便后续被其他语言所调用; - 在 Java 程序端创建接口类并通过适当的方式(如 ProcessBuilder 启动子进程运行外部命令)触发该模块的工作流程。 ```java // Example of using ProcessBuilder to invoke a python script with deepspeed. ProcessBuilder pb = new ProcessBuilder("python", "train_with_deepspeed.py"); pb.redirectErrorStream(true); try { Process p = pb.start(); } catch (IOException e) { System.err.println(e.getMessage()); } ``` #### 方法二:构建 RESTful Web Service 另一种可行的选择是开发一个独立的服务层作为中介桥梁连接前后两端应用。此服务通常会部署在一个支持异步处理请求的强大框架之上,比如 FastAPI, Flask RestX 等,并暴露出一系列标准化 HTTP 请求方法用于接收来自客户端的数据流、解析后转发至指定位置完成相应任务后再返回计算结果给发起者。 在这种情况下,整个架构设计可能涉及到多个组件之间的协作配合才能顺利运作起来: - 构建微服务应用程序监听特定路径下的 POST 请求,从中提取 JSON 格式的输入数据; - 利用 subprocess.Popen() 函数启动新的 shell session 实现跨平台兼容性的同时也方便管理资源释放等问题; - 当收到响应信号时立即将输出内容序列化回原格式传送给原始调用方等待进一步指示。 ```python from fastapi import FastAPI, Request import json app = FastAPI() @app.post("/deepspeed/train/") async def train_model(request: Request): body = await request.json() # Start training process here... result = {"status": "success"} return JSONResponse(content=json.dumps(result)) ``` 尽管这两种途径都可以帮助实现在 Java 应用程序内嵌入 DeepSpeed 功能的目的,但从实际应用场景出发建议优先选用第二种策略因为它不仅简化了整体结构而且提高了系统的灵活性与扩展能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值