Tomcat+ApacheSOAP部署访问COM对象的WebService
2008-04-25 23:12
423 查看
如果大家用过微软的SoapToolBox的话,一定会知道部署一个访问COM对象的WebService是非常简单事情。而在java环境下,要完成这件事情也不是很复杂。以下是我通过WebService访问一个简单COM对象,只包含一个简单的SayHello方法返回字符串。
我的环境是COM" target=_blank>Tomcat4.0+apachesoap,其中COM" target=_blank>Tomcat在http://jakarta.apache.org/site/binindex.html
下载,apachesoap在http://xml.apache.org/dist/soap/下载。
步骤:
1。把soap.jar包含到classpath
2。把COMProvider.dll所在路径设置到Path
3。VB写一个COM对象代码如下
‘WebDll.SimpleMath
Public Function SayHello() As String
SayHello = "Hello From COM Object"
End Function
编译生成WebDll.dll
4。写一个部署描述文件WebDll.xml
<!--Apache SOAP specific deployment descriptor (ie loads this service into Apache SOAP.-->
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:WebDll-COM">
<isd:provider type="org.apache.soap.providers.COM.RPCProvider"
scope="Application"
methods="SayHello">
<isd:java class="required not needed for COMProvider"/>
<isd:option key="progid" value="WebDll.SimpleMath" />
</isd:provider>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
</isd:service>
5。部署
java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter deploy WebDll.xml
6。客户端程序
import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
public class JClient
{
public static void main( String[] args) throws Exception
{
Integer n1=null;
Integer n2=null;
final String urn= "urn:WebDll-COM";
Vector params = new Vector ();
URL url = new URL ("http://" + serverhost + ":" + serverport+ soapservlet);
// Build the call.
Call call = new Call ();
call.setTargetObjectURI (urn);
call.setMethodName ("SayHello");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setParams (params);
Response resp = call.invoke (/* router URL */ url, /* actionURI */ "" );
if (resp.generatedFault ()) {
Fault fault = resp.getFault ();
System.out.println ("Ouch, the call failed: ");
System.out.println (" Fault Code = " + fault.getFaultCode ());
System.out.println (" Fault String = " + fault.getFaultString ());
} else {
Parameter result = resp.getReturnValue ();
System.out.println(result.getValue());
}
}
static String serverhost= "localhost";
static String serverport= "8080";
static String soapservlet= "/soap/servlet/rpcrouter";
} // end addit
7。测试运行
编译JClient启动COM" target=_blank>Tomcat
运行java JClient
返回结果
Hello From COM Object
文中不妥处请指教,zlyperson@163.net
我的环境是COM" target=_blank>Tomcat4.0+apachesoap,其中COM" target=_blank>Tomcat在http://jakarta.apache.org/site/binindex.html
下载,apachesoap在http://xml.apache.org/dist/soap/下载。
步骤:
1。把soap.jar包含到classpath
2。把COMProvider.dll所在路径设置到Path
3。VB写一个COM对象代码如下
‘WebDll.SimpleMath
Public Function SayHello() As String
SayHello = "Hello From COM Object"
End Function
编译生成WebDll.dll
4。写一个部署描述文件WebDll.xml
<!--Apache SOAP specific deployment descriptor (ie loads this service into Apache SOAP.-->
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:WebDll-COM">
<isd:provider type="org.apache.soap.providers.COM.RPCProvider"
scope="Application"
methods="SayHello">
<isd:java class="required not needed for COMProvider"/>
<isd:option key="progid" value="WebDll.SimpleMath" />
</isd:provider>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
</isd:service>
5。部署
java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter deploy WebDll.xml
6。客户端程序
import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
public class JClient
{
public static void main( String[] args) throws Exception
{
Integer n1=null;
Integer n2=null;
final String urn= "urn:WebDll-COM";
Vector params = new Vector ();
URL url = new URL ("http://" + serverhost + ":" + serverport+ soapservlet);
// Build the call.
Call call = new Call ();
call.setTargetObjectURI (urn);
call.setMethodName ("SayHello");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setParams (params);
Response resp = call.invoke (/* router URL */ url, /* actionURI */ "" );
if (resp.generatedFault ()) {
Fault fault = resp.getFault ();
System.out.println ("Ouch, the call failed: ");
System.out.println (" Fault Code = " + fault.getFaultCode ());
System.out.println (" Fault String = " + fault.getFaultString ());
} else {
Parameter result = resp.getReturnValue ();
System.out.println(result.getValue());
}
}
static String serverhost= "localhost";
static String serverport= "8080";
static String soapservlet= "/soap/servlet/rpcrouter";
} // end addit
7。测试运行
编译JClient启动COM" target=_blank>Tomcat
运行java JClient
返回结果
Hello From COM Object
文中不妥处请指教,zlyperson@163.net
相关文章推荐
- Tomcat+ApacheSOAP部署访问COM对象的WebService
- Tomcat+ApacheSOAP部署访问COM对象的WebService
- 一起谈.NET技术,Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的Webservice
- Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的Webservice 的两种技巧
- Silverlight访问 Apache服务器(Tomcat,Geronimo)中部署的Webservice
- Silverlight访问 Apache服务器(Tomcat,Geronimo)中部署的Webservice
- Silverlight访问 Apache服务器(Tomcat,Geronimo)中部署的Webservice
- Window server 2008下部署apache-tomcat-5.5.31项目通过localhost可以访问而通过IP无法访问
- windows server2012部署apache项目访问后台管理系统时tomcat就停了是怎么回事
- apache-tomcat-8.5.23 部署intellij idea maven项目访问方法
- Webservice_24_SOAP的基于契约优先开发用户管理_部署到Tomcat
- java+mysql在tomcat服务器下建立SOAP(axis2)通过KSOAP2访问的诸多问题
- linux下tomcat部署ssl出现The APR based Apache Tomcat Nat
- Apache CAS部署在tomcat上实现单点登录
- JAX-WS构建简单webservice部署到tomcat上
- windows访问linux下tomcat部署的webx项目
- centos部署lvs+keepalived+apache/tomcat实现高性能高可用负载均衡
- Webservice-使用Tomcat的SOAP的应用
- 用axis2+Tomcat5.5+Eclipse3.2部署和访问Web服务(多图)
- 【Tomcat学习笔记系列】使用域名访问Tomcat部署下的项目