VB调用Jboss Web Service
引言:由于异构系统通信需要,公司需要pb7写的系统调用java开发的web服务,众所周知pb7本身没有web服务功能,因此,pb7不能直接调用java web服务。为此,不得不使用其它语言(VB、donet等)封装与java web服务进行通讯的dll供pb去调用,间接的实现pb调用java web服务。Pb调用dll或者com组件网上比较多,在本人另外一篇博文PB7调用C# dll中也有详细的说明,因此本文着重讲述了vb如何调用Jboss Web Service。选用VB还不是C#是因为,很多客户端是pos机,配置较低。
一、 JWS(Jboss Web Service)的创建
我们将创建一个基于JSR-181 规范的Web Service 及其对应的客户端。开发一个JSR-181 POJO Endpoint的Web Service 应遵守下面几个步骤:建立一个POJO endpoint,把endpoint 定义成一个servlet和把endpoint 打包成一个Web 应用(war 文件)。
1) 建立一个POJO endpoint
/**
* @author bighorse
*/
package com.jbossws.server;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService(name = "HelloWorld", targetNamespace="http://com.jbossws.server/helloworld")
@SOAPBinding(style = SOAPBinding.Style.RPC,parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class HelloWorldWS implements HelloWorldInterface
{
@WebMethod(operationName = "sayHello",exclude = false)
public String sayHello(@WebParam(targetNamespace="http://com.jbossws.server/helloworld",
partName = "msg", name = "msg")String msg)
{
System.out.println("I'm Hit! " + msg);
return "Hello World: " + msg + " on " + new java.util.Date();
}
@WebMethod
public String sayWorld() {
// TODO Auto-generated method stub
return "sayWorld with no args";
}
}
|
package com.jbossws.server;
import java.rmi.Remote;
public interface HelloWorldInterface extends Remote{
public String sayHello(String msg);
public String sayWorld();
}
|
2) 把endpoint 定义成一个servlet,WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>HelloWorldService</servlet-name>
<servlet-class>com.jbossws.server.HelloWorldWS</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldService</servlet-name>
<url-pattern>/HelloWorldService</url-pattern>
</servlet-mapping>
</web-app>
|
3) 把endpoint 打包成一个Web 应用(war 文件),下面是Ant配置文件build.xml的片段
<target name="war" depends="compile" description="创建WS 发布包">
<war warfile="${app.dir}/helloworldws.war" webxml="${app.dir}/WEB-INF/web.xml">
<classes dir="${build.classes.dir}">
…
</classes>
</war>
</target>
|
经过上面的步骤,完成了一个Web Service 的开发,下面我们通过Jboss 管理平台查看刚才发布的Web Service ,我们可以输入http://localhost:8000/jbossws/进入JbossWS 的查看界面。
二、 VB使用SOAP消息调用JWS
1) SOAP简介
a. SOAP定义
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:
·SOAP封装(envelop):封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
·SOAP编码规则(encoding rules):用于表示应用程序需要使用的数据类型的实例;
·SOAP RPC表示(RPC representation):表示远程过程调用和应答的协定;
·SOAP绑定(binding):使用底层协议交换信息。
b. SOAP消息
SOAP采用了已经广泛使用的两个协议:HTTP和XML。其中HTTP用于实现SOAP的RPC风格的传输,而XML是它的编码模式,一个SOAP请求实际上就是一个HTTP POST请求。
2) WSDL简介
WSDL (Web Services Description Language)是一种XML Application,他的作用是将一个Web Services描述为一组服务访问点。WSDL文档将一个Web Services描述成一组网络端点或者端口,在WSDL中,由于服务访问点和消息的抽象定义已经和具体的服务期部署和数据格式绑定分离,因此可以再次使用这些抽象对象: 消息,是对需要交换信息的抽象描述;端口类型,是对Web Service提供的操作的抽象集合。
特定端口类型的具体协议和数据格式定义构成了一个可以从用的绑定,一个端口定义成一个可重用绑定和网络地址的关联,一组端口构成了一个服务。
WSDL在定义Web Sevices时使用了以下元素:
·Types: 数据类型的容器,他采用一些类型系统(比如常用的XSD)
·Message: 通信消息的抽象类型化定义
·Operation: 服务提供的操作的抽象化描述
·Port Type: 一个或者多个端点支持的一组操作的抽象
·Binding: 特定端口类型的具体协议和数据格式定义
·Port:定义为binding和网络地址的关联的单个的端点
·Service: 一组相关的端点的结合
3) VB编写客户端程序
a. 环境准备
要使用SOAP消息访问Web Service消息。必须先下载MicroSoft公司提供的Soap ToolKit(http://download.microsoft.com/download/xml/soap/2.0/W98NT42KMe/EN-US/SoapToolkit20.exe)
b. 编写VB客户端应用
c. 编写SOAP消息
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header/>"
<env:Body>
<ns1:sayHello xmlns:ns1='http://com.jbossws.server/helloworld'>
<msg>佛山人</msg>
</ns1:sayHello>
</env:Body>
</env:Envelope>
d. 显示处理结果
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header></env:Header>
<env:Body><ns1:sayHelloResponse xmlns:ns1='http://com.jbossws.server/helloworld'>
<return>Hello World: 佛山人 on Sun Jul 01 16:14:42 CST 2007</return>
</ns1:sayHelloResponse>
</env:Body>
</env:Envelope>
我们需要使用ToolKit中的xml解析器对他进行解析才能获取我们需要的结果。
e. VB客户端代码
Private Sub CommandButton1_Click()
Dim xmlhttp As New MSXML2.xmlhttp
Dim soaprequest As String
Dim postUrl As String
Dim strout As String
Dim xmldoc As New MSXML2.DOMDocument
postUrl = "http://127.0.0.1:8000/helloworldws/HelloWorldService"
xmlhttp.Open "POST", postUrl, False
soaprequest = "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>"
soaprequest = soaprequest & " <env:Header/>"
soaprequest = soaprequest & " <env:Body>"
soaprequest = soaprequest & " <ns1:sayHello xmlns:ns1='http://com.jbossws.server/helloworld'>"
soaprequest = soaprequest & " <msg>佛山人</msg>"
soaprequest = soaprequest & " </ns1:sayHello>"
soaprequest = soaprequest & " </env:Body>"
soaprequest = soaprequest & " </env:Envelope>"
xmlhttp.setRequestHeader "Content-Length", Len(soaprequest)
xmlhttp.setRequestHeader "SOAPAction", ""
xmlhttp.send (soaprequest)
strout = xmlhttp.responseText
xmldoc.loadXML strout
'MsgBox strout.Item(0).Text
MsgBox xmldoc.getElementsByTagName("return").Item(0).Text
End Sub
|
分享到:
相关推荐
### 利用JBOSS开发WEB SERVICE:详细指南与实践 #### 核心知识点概览 本篇将深入探讨在JBoss应用服务器上构建Web Service的全面指南,涵盖从安装配置到开发、测试、安全及高级特性应用的全过程。重点包括JBossWS的...
Tomcat下web工程调用JBOSS部署的EJB项目 此源码包 包括local本地调用及remote远程调用 文档说明在http://blog.csdn.net/heardy/article/details/6906225
4. **安全管理**:JBoss Web 3.0.0可能包括了增强的安全特性,如JAAS(Java Authentication and Authorization Service)集成,提供用户认证和授权功能,以保护Web应用程序免受未经授权的访问。 5. **性能优化**:...
《atmosphere-compat-jbossweb-0.6.3.jar.zip:理解与应用》 在Java开发领域,我们经常需要处理各种库和框架,以提高应用程序的功能和性能。"atmosphere-compat-jbossweb-0.6.3.jar.zip"就是这样一个组件,它在Java...
mac linux 用 JBoss Restful 搭建Restful web service demo
【JBoss Web 2.1.0.GA 知识点详解】 JBoss Web,全称为JBoss Application Server的Web容器部分,是Red Hat公司开发的一款开源Java Servlet和JavaServer Pages(JSP)容器,它是JBoss应用服务器的重要组成部分。在本...
在开始使用JBoss之前,确保系统已安装JDK是非常重要的,因为JBoss是纯Java的Web应用服务器,依赖于JDK来运行。官方下载地址为http://labs.jboss.com/jbossas/downloads/,你可以在这里获取最新的JBoss应用服务器版本...
如文章中提到的端口修改问题路径:`jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar\server.xml` 中的 `${jboss.bind.address}">` 需要根据实际情况进行调整。 5. **文件权限**:检查文件的权限设置,确保...
RMI URL通常类似于`service:jmx:rmi:///jndi/rmi://hostname:port/jmxrmi`,其中`hostname`和`port`是JBoss服务器的地址和端口。 为了实现远程调用JMX,我们需要以下步骤: 1. **配置JBoss**:在JBoss的配置文件...
5. **启动服务器**:最后,启动服务端应用,使Web Service可供客户端调用。 在Java中,现代的Web Service实现已经转向了Apache CXF、JAX-WS(Java API for XML Web Services)和Spring-WS等框架,它们提供了更强大...
### JBoss Web 用户手册知识点概览 #### 一、关于 JBoss Web - **概述**:JBoss Web 是 JBoss Enterprise Middleware Stack (JEMS) 的关键组成部分之一,它能够以与 Apache Web 服务器媲美甚至超越其性能的方式运行...
通过JNDI,Web层可以查找并调用EJB层的服务。 其次,"jndi.properties"文件是用来配置JNDI的,JNDI是一个接口,允许Java程序查找和绑定命名服务。在EJB+JPA环境中,它通常用于定义数据源(DataSource)的JNDI名称,...
在JBoss中,`<Service name="jboss.web">`允许自定义StandardService的版本,以便连接器可以在独立于正常生命周期启动的情况下开始,使得web应用程序在启动连接器前就可以部署。这种设计提高了应用的灵活性和效率。 ...
JBOSS的安全配置• JMX Console • JBoss Web Console
jboss web 是在tomcat的基础之上又进行了一些修改,如果你一直在用tomcat,建议试一下jboss web,它的目录结构和tomcat的一样,使用方法也一样,但性能要好点。 最重要的是他可以在一台机器上方便的安装多个服务。
在JBoss中,我们可以将一个WEB应用配置为默认应用程序,使得用户可以通过IP地址直接访问,而无需在URL中指定具体的工程名。这个过程涉及到对JBoss服务器配置的深入理解和XML文件的编辑。 标题所指的"将WEB应用发布...
【ejb-jboss-web实例的workspace】是一个专用于开发和部署EJB(Enterprise JavaBeans)与Web应用程序的工作环境,基于JBoss应用服务器。这个工作空间集合了开发所需的各种组件、配置文件以及源代码,便于开发者进行...
JBoss EAP 6.4 是一款广泛应用的企业级应用服务器,尤其适合部署Web应用程序。本文主要介绍了如何配置和管理JBoss EAP 6.4,包括安装和部署FineReport、修改服务器端口、调整内存设置以及改变Web工程的根目录。 ...
3. EJB(Enterprise JavaBeans)和Web服务支持:帮助开发者创建、编辑和测试EJB以及SOAP和RESTful Web服务。 4. JBoss Data Virtualization(JDV)工具:允许通过图形界面进行数据虚拟化配置,将多个数据源融合为...
Jboss启动报Failed to parse WEB-INF/web.xml; - nested throwable错误解决方案 在Jboss应用服务器中,启动报错Failed to parse WEB-INF/web.xml; - nested throwable是一种常见的错误,本文将对此错误进行深入分析...