快速业务通道

在AIX Version 5.3中使用Java和PHP技术进行开发,第4部分

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
,您 不能使用SOAP服务创建一个持久的结构,因为Web服务和访问它的信息仅在Web服务方法期间是可用的。这 是使用Web服务的限制之一,也是相应的解决方案(如 Web服务资源框架 (WSRF))存在的原因,因为它们 可以提供持久性。

幸运的是,对于这个特定的Web服务,您不需要持久性,但是您需要可靠地重新 创建问卷调查集合,以便在客户端访问问题1 时,他们可以获得问题1 的问题文本,而在他们访问问题2 时,问题2 的文本和选项是相同的。

您无法实现持久性,但是您可以创建一个方法,而该方法将 一致地创建问卷调查问题集合,以便不同 Web服务方法的调用每次都可以访问正确的信息。这正是 initialize() 方法的目的,它可以在调用时使用问卷调查信息来填充类全局的集合。

您可以在清 单 11 中看到导言部分。

清单 11. 导言部分

/**
* SQWSSOAPImpl.java
*
* This file was auto-generated from WSDL
* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
*/
package SQWS;
import java.io.*;
import java.util.*;
import java.sql.*;
public class SQWSSOAPImpl implements SQWS.SQWS_PortType {
  Collection<SQWS.SurveyQuestion> survey = new ArrayList<SQWS.SurveyQuestion>();
  private void initialize() {
    
    this.survey.add(new SurveyQuestionText("Name",
            "Enter your full name"));
    this.survey.add(new SurveyQuestionRadio("Favourite colour",
           "Enter your favourite colour",
           new String[] {"Red", "Blue", "Green"}));
  }
...
}

现在,您需要 开始为那些反映 SOAP 方法的方法定义相应的代码,从而实现 Web服务。

initializeSurvey 方法

initializeSurvey 方法为InitializeSurvey SOAP 方法实现了相应的代码,并且它是一个比较复 杂的方法,因为您需要连接到 DB2 数据库并执行在survey_response 表中创建一新行的SQL。正如您从本 系列文章前面的部分中所了解的,这个表中定义了一个自增列,在插入一行内容的时候可以生成一个唯一 的编号。

因此,这个方法与Web 接口版本中问卷调查回答代码的第一部分是相同的,其中打开了 到 DB2 数据库的连接,插入一行,然后获得所生成的唯一的ID。清单 12 中显示了initializeSurvey 方 法。

清单 12. initializeSurvey 方法

public int initializeSurvey() throws java.rmi.RemoteException {
    ResultSet rs;
    Statement s;
     Integer responseid = -1;
    Connection conn = null;
    try {
       Class.forName("com.mysql.jdbc.Driver");
      conn =
DriverManager.getConnection("jdbc:db2://localhost:50000/SURVEY",
                "survey","surveypw");
  } catch (Exception ex) {
    System.out.println("SQLException: " + ex.getMessage());
  }
  try {
    s = conn.createStatement();
    s.executeUpdate(
            "INSERT INTO survey_response (responseid) "
             + "values (0)",
             Statement.RETURN_GENERATED_KEYS);
    rs = s.getGeneratedKeys();
    if (rs.next()) {
      responseid = rs.getInt(1);
    } else {
       System.out.println("Can''t get auto increment d

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号