深入探索Java应用中的Web服务:部署、开发与实践
立即解锁
发布时间: 2025-08-17 01:24:19 阅读量: 3 订阅数: 13 


XML编程宝典:从基础到实践的全面指南
### 深入探索 Java 应用中的 Web 服务:部署、开发与实践
在当今数字化时代,Web 服务在软件开发中扮演着至关重要的角色。它能够实现不同系统之间的交互和数据共享,为应用程序的开发和扩展提供了强大的支持。本文将详细介绍 Web 服务的部署、开发以及相关代码的实现,帮助你更好地理解和应用 Web 服务。
#### 一、服务器状态测试与部署
在开始使用 Web 服务之前,我们需要确保服务器已经正确部署。可以通过以下步骤进行测试:
1. 打开一个 Web 浏览器窗口。
2. 输入以下 URL(必要时替换 IP 地址):`http://127.0.0.1:8080/axis`。
如果一切正常,你将看到一个基本的 HTML 网页,其中列出了已部署的 Web 服务,如下所示:
```plaintext
Content-Type: text/html; charset=utf-8 Content-Length: 977
And now... Some Services
AdminService (wsdl)
AdminService
XMLPBWSServletBuildAttributeXML (wsdl)
GetSingleQuoteAttribute
XMLPBWSServletBuildElementXML (wsdl)
GetSingleQuoteElement
XMLPBWSServletGetAuthorList (wsdl)
GetAuthorList
XMLPBWSServletGetSingleAuthorList (wsdl)
GetSingleAuthorList
Version (wsdl)
getVersion
```
这个页面确认了 Web 服务已经成功部署。页面顶部和底部有两个系统 Web 服务,其余列出的服务是通过命令部署的自定义 Web 服务类。每个服务后面跟着一个方法名,这些方法通过 WSDD 文件在服务器上注册。
如果屏幕上出现错误,或者并非所有类和方法都已安装,首先要检查 AXIS CLASSPATH 设置。如果 CLASSPATH 设置正确,再检查类和 WSDD 文件的位置。
#### 二、应用程序安装
##### (一)安装 XMLPBWSApp J2EE 应用程序
XMLPBWSApp.class 文件应安装在 Java JDK 可访问的工作站目录中。可以从 `XMLProgrammingBible.com` 网站的下载部分下载 XMLPBWSApp 应用程序和所有 Web 服务文件。
##### (二)安装 WSDL 文件
WSDL 文件应与 Java 类文件加载到同一个 J2EE 服务器上。虽然 WSDL 文件与 Web 服务的功能没有直接关系,但在生产环境中,它们应位于 J2EE 应用服务器的 HTML 目录中。如果有 UDDI 条目引用该 Web 服务,WSDL 文件的发现 URL 应发布在 UDDI 条目或其他服务引用中,例如 `Xmethods.com` 上的条目。
#### 三、运行 Web 服务客户端
当应用程序下载完成且所有安装步骤都已完成后,可以通过以下方式运行应用程序:
1. 打开命令提示符。
2. 输入 `java XMLPBWSApp` 并回车。
或者通过 Windows 的“运行”菜单选项输入 `java XMLPBWSApp`。应用程序将在其自己的 Java 窗口中显示在屏幕上。
#### 四、深入了解 XMLPBWSServletGetAuthorList Web 服务
`XMLPBWSServletGetAuthorList` 是一个通过 JDBC 从 MS SQL Server 数据库返回唯一引用作者列表的 Web 服务。以下是其详细实现步骤:
1. **建立 JDBC 连接**:
- 加载 MS SQL Server JDBC 驱动程序:`Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");`
- 建立与数据库的连接:
```java
Connection conn = DriverManager.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;User=jdbcUser;Password=jdbcUser;DatabaseName=XMLProgrammingBible");
```
2. **执行 SQL 查询**:
- 定义 SQL 查询语句:`String sql = "select AuthorName from Authors";`
- 创建 Statement 对象并执行查询:
```java
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery(sql);
```
3. **构建数组**:
- 使用 `buildArray` 方法从结果集中构建数组:`authorList = buildArray(rs);`
- `buildArray` 方法的实现如下:
```java
String[] buildArray(ResultSet rs) {
java.util.List arrayResults = new ArrayList();
try {
int rownumber = 0;
String rowvalue = new String();
while(rs.next()) {
rownumber++;
rowvalue = rs.getString(rownumber++);
arrayResults.add(rowvalue.trim());
}
} catch(Exception e) {}
String[] sarray = (String[]) arrayResults.toArray(new String[arrayResults.size()]);
return sarray;
}
```
4. **关闭连接和结果集**:
```java
rs.close();
conn.close();
```
5. **返回结果**:
```java
return authorList;
```
以下是完整的 `XMLPBWSServletGetAuthorList` 类代码:
```java
import java.util.*;
import java.io.*;
import java.sql.*;
public class XMLPBWSServletGetAuthorList {
public String [] GetAuthorList() {
String authorList [] = null;
String sql = "select AuthorName from Authors";
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;User=jdbcUser;Password=jdbcUser;DatabaseName=XMLProgrammingBible");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery(sql);
authorList = buildArray(rs);
rs.close();
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
return authorList ;
}
String[] buildArray(ResultSet rs) {
java.util.List arrayResults = new ArrayList();
try {
int rownumber = 0;
String rowvalue = new String();
while(rs.next()) {
rownumber++;
rowvalue = rs.getString(rownumber++);
arrayResults.add(rowvalue.trim());
}
} catch(Exception e) {}
String[] sarray = (String[]) arrayResults.toArray(new String[arrayResults.size()]);
return sarray;
}
}
```
#### 五、WSDL 和 WSDD 文件
每个 Web 服务都有两个相关文件:Web Services Description Language (WSDL) 文件和 Web Service Deployment Descriptor (WSDD) 文件。下面以 `XMLPBWSServletGetAuthorList` 类为例进行说明。
##### (一)WSDD 文件
WSDD 文件是一个格式良好的 XML 文档,用于控制 Web 服务的部署、安全和管理。以下是 `XMLPBWSServletGetAuthorList` 的 WSDD 文件:
```xml
<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- Services from XMLPBWSServletGetAuthorListService WSDL service -->
<service name="XMLPBWSServletGetAuthorList" provider="java:RPC">
<parameter name="wsdlTargetNamespace"
value="http://www.xmlprogrammingbible.com/wsdl/default/"/>
<parameter name="wsdlServiceElement"
value="XMLPBWSServletGetAuthorListService"/>
<parameter name="wsdlServicePort"
value="XMLPBWSServletGetAuthorList"/>
<parameter name="className"
value="com.xmlprogrammingbible.www.XMLPBWSServletGetAuthorListSoapBindingSkeleton"/>
<parameter name="wsdlPortType" value="XMLPBWSServletGetAuthorList"/>
<parameter name="allowedMethods" value="*"/>
<typeMapping xmlns:ns="http://www.xmlprogrammingbible.com/wsdl/default/"
qname="ns:ArrayOf_soapenc_string"
type="java:java.lang.String[]"
serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</service>
</deployment>
```
部署描述符从 J2EE 服务器的角度描述 Web 服务。
##### (二)WSDL 文件
WSDL 文件从客户端的角度描述 Web 服务。以下是 `XMLPBWSServletGetAuthorList` 的 W
0
0
复制全文
相关推荐










