亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

講解ASE12.5.1以后提供的WebService功能

2024-07-21 02:43:28
字體:
來源:轉載
供稿:網友
ASE自從12.5.1以后提供了WebService的功能。ASE提供的WebService

功能總結下來包括三個部分:

•ASE提供WebService的服務端,供其它WebService客戶端調用。這也叫做ASE WebService生產者。ASE WebService生產者提供了三個方法,供客戶端調用,將SQL或者存儲過程執行結果以SOAP格式返回給調用者。

•ASE WebService組件也可以作為WebService的客戶端,調用其他WebService的服務。這也叫做ASE WebService消費者。

•用戶也可以在ASE WebService服務器上自定義自己的WebService服務,供其他客戶端掉用。用戶自定義WebService服務可以執行一段SQL語句并返回執行結果。

本文以ASE15.0.2為例介紹一下如何配置ASE WebService生產者供其它客戶端調用。

安裝ASE WebService組件

在安裝ASE服務器時,需要安裝ASE WebService組件。這一組件是ASE的一個Feature,需要有ASE WebService的License才能使用這一功能。

安裝過程如果選擇ASE WebService組件,則安裝時就可以配置ASE WebService服務器。配置過程也可以放到安裝結束以后通過Sybase Central單獨配置。

ASE WebService組件的配置

ASE WebService組件的配置包括三部分內容:生產者配置、SSL配置、消費者配置。

配置過程非常的簡單,如果是通過Sybase Central配置,只需根據提示進行配置即可。如果想通過WebService來執行SQL語句或者ASE中的存儲過程,只需要配置生產者即可,SSL與消費者的配置可跳過。此時只需要指定WebService服務器供客戶端掉用的端口號。默認端口號是8181。

激活ASE WebService功能

配置完成后,首先使用sa登錄到ASE數據庫:

Isql –U sa –P –SDBNAME

執行如下語句激活WebService功能:

Sp_configure “enable webservices”,1

Go

如果沒有webservice 功能的license,將不能激活該功能。

ASE WebService服務器的啟動

使用命令行方式進入到C:/Sybase/WS-15_0/bin下(c:/sybase是ASE的安裝目錄)執行:

runws -U sa -P nopassWordspecified -S DBNAME

注意,此處如果sa口令為空,-P 后的參數一定要為nopasswordspecified 。-S 后面跟的是ASE服務器的名字,一定要與c:/sybase/ini/sql.ini里配置的服務名稱相符。

如果一切正常,那么ASE WebService將為啟動,端口號8181。此時如果在IE瀏覽器里輸入:http://localhost:8181/services/ase?wsdl,將會出現ase服務的WSDL文件。ase服務提供了三個方法:

•Login:建立一個持久的數據庫連接。但這個不是必需的,如果直接調用execute方法,系統會使用execute方法提供的用戶名與口令建立一個臨時的數據庫連接。

•Logout:斷開由Login建立的持久連接

•Execute:執行SQL或者存儲過程。關于該方法的參數請參考Sybase官方文檔。

Runws還有其他參數,詳細請參考sybase官方文檔。

停止ASE WebService的命令如下:

stopws -U sa -P nopasswordspecified -S DBNAME

測試:

有了WSDL,想必大家都應該知道下一步如何做了。只需要使用工具將WSDL編譯成后面我們需要的客戶端stub文件即可。

如果你需要立即測試ASE WebService配置是否正確,ASE提供了一個測試用的客戶端。在命令行下進入到C:/Sybase/WS-15_0/samples/apacheclient,執行:

runexecute "http://localhost:8181/services/ase" DBNAME sa "" "columnstyle=attribute,tablename=ws" all 1 "select @@version"

這個測試腳本通過java調用ASE WebService發布的ase服務的execute方法,用以執行SQL: select @@version。如果一切正常,你將會看到你非常熟悉的xml輸出。

Runexecute的語法如下:

runexecute “web_service_URL” aseServerName user_ID password “SQLX_option” output_class count “sql_statement”

參數如下:

• web_service_URL

正在使用的Web 服務的位置。

• aseServerName

SOAP string,表示interfaces 文件或LDAP 服務器中Adaptive ServerEnterPRise 服務器的名稱。

• user_ID

登錄到Adaptive Server Enterprise 所需的用戶ID。

• password

登錄到Adaptive Server Enterprise 所需的口令。

• SQLX_option

表示一個或多個option 參數的字符串。這些參數用于指定SQLX 結果集的特性。以下是有效的選項參數:

• binary={hex | base64}

• columnstyle={element | attribute}

• format={yes | no}

• header={yes | no}

• nullstyle={attribute | omit}

• prefix=“value”

• root={yes | no}

• rowname=“value”

• schemaloc=“value”

• statement={yes | no}

• tablename=“value”

• targetns=“value”

• output_class

所需的輸出類型。以下是此參數的有效值:

• schema — 返回

XML 模式。

• dtd — 返回

XML DTD。

• data — 返回結果集。

• all — 返回模式、DTD 和數據。

• count

執行此語句的次數。如果count 的值大于

1,則會創建一個會話并使用持久連接。

• sql_statement

要在Adaptive Server Enterprise 上執行的語句。該語句必須用雙引號分隔。

你可以試著改變一下runexecute的參數看一下輸出的變化:

runexecute "http://localhost:8181/services/ase" DBNAME sa "" "columnstyle=attrib ute,tablename=ws" all 1 "select @@version"

當然,你也可以改變執行的SQL語句,看看執行結果輸出。

Runexecute調用的java類的源代碼請參考本文的最后一部分。這個源代碼可以作為一個示例程序,供參考。

其他的配置工作

對于將ASE作為其他WebService的客戶端的配置(使用sp_webservices),以及如何配置自定義的WebService服務(使用create service,drop service命令),ASE都提供了相應的命令,也非常的簡單易用,另外還有SSL的配置。大家不妨參考Sybase文檔逐一驗證。

客戶端參考代碼

import com.sybase.apachetest.*;

import javax.xml.rpc.Stub;

import java.net.URL;

import java.security.Security;

public class ASEExecute

{

public static void main(String[] args)

{

try

{

if (args.length <

{

System.out.println ("Gotta have 8 args only got: " + args.length + "/n";

System.out.println ("Argument 1: Endpoint for SOAP ";

System.out.println ("Argument 2: ASE Service Name ";

System.out.println ("Argument 3: ASE Username to login as ";

System.out.println ("Arugment 4: ASE Password to use in login ";

System.out.println ("Argument 5: SQL X Options ";

System.out.println ("Argument 6: Dataoutput (one of all, schema, dtd or data or count)";

System.out.println ("Arugment 7: Number of times to execute (in session) ";

System.out.println ("Arugment 8: SQL to execute ";

System.exit (1);

}

String endpoint = args[0];

System.setProperty ("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol";

Security.addProvider (new com.sun.net.ssl.internal.ssl.Provider());

URL endURL = new URL (endpoint);

String serverName = args[1];

String userName = args[2];

String password = args [3];

if (password.compareTo("nopasswordspecified") == 0)

{

System.out.println ("Replacing password with null token.");

password = "";

}

String sqlxOptions = args[4];

String dataOutput = args[5];

String numExecutionStr = args[6];

int numExecution = 1;

try

{

Integer tmp = new Integer (numExecutionStr);

numExecution = tmp.intValue ();

}

catch (NumberFormatException err)

{

System.out.println ("Could not convert " + numExecutionStr + " to a number.");

System.out.println ("Assuming 1 execution.");

numExecution = 1;

}

String sql = args[7];

System.out.println ("SOAP Endpoint: " + endpoint);

System.out.println ("ASE Service Name: " + serverName);

System.out.println ("ASE Username: " + userName);

System.out.println ("ASE Password: ********** " );

System.out.println ("SQL X options: " + sqlxOptions);

System.out.println ("Data Output: " + dataOutput);

System.out.println ("Number of executions: " + numExecution);

System.out.println ("Sql Select to execute: " + sql);

ExecuteStoredProcServiceLocator service = new ExecuteStoredProcServiceLocator ();

if (numExecution != 1)

{

service.setMaintainSession (true);

}

ExecuteStoredProc port = service.getase(endURL);

for (int ii = 0; ii < numExecution; ii++)

{

DataReturn[] data = port.execute (serverName,

userName,

password,

sqlxOptions,

sql);

if (data != null)

{

for (int jj = 0; jj < data.length; jj++)

{

System.out.println ("rinting result set #" + jj );

if (dataOutput.compareTo ("all") == 0

|| dataOutput.compareTo ("dtd") == 0)

{

System.out.println ("data.getDTD is: /n" + data[jj].getDTD ());

}

if (dataOutput.compareTo ("all") == 0

|| dataOutput.compareTo ("data") == 0)

{

System.out.println ("data.getXML is: /n" + data[jj].getXML ());

}

if (dataOutput.compareTo ("all") == 0

|| dataOutput.compareTo ("schema") == 0)

{

System.out.println ("data.getSchema is: /n" + data[jj].getSchema ());

}

System.out.println ("data.updateCount is: " + data[jj].getUpdateCount ());

}

}

}

}

catch (Exception ex)

{

ex.printStackTrace();

}

}

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久| 国产在线一区二区三区| 97在线视频免费播放| 国产精品青青在线观看爽香蕉| 精品久久久久久亚洲精品| 久久综合免费视频| 欧美一乱一性一交一视频| 国产精品久久久久高潮| 国产成人aa精品一区在线播放| 日韩一级裸体免费视频| 91精品久久久久久综合乱菊| 69av在线视频| 亚洲视频网站在线观看| 亚洲欧美在线看| 日韩视频免费中文字幕| 久久影院中文字幕| 亚洲伊人久久大香线蕉av| 中文字幕日韩精品有码视频| 欧美午夜性色大片在线观看| 精品国产成人av| 亚洲欧美综合另类中字| 国模gogo一区二区大胆私拍| 国产精品夜色7777狼人| 国产精品美女av| 国产91精品视频在线观看| 国产91精品视频在线观看| 欧美在线播放视频| 欧美成人午夜激情| 久久成人这里只有精品| 欧美日韩免费观看中文| 欧美一区三区三区高中清蜜桃| 欧美亚洲另类在线| 日韩欧美在线第一页| 欧洲亚洲免费在线| 国产精品久久一区| 成人精品视频99在线观看免费| 亚洲精品视频网上网址在线观看| 久久久久九九九九| 欧美插天视频在线播放| 精品视频在线播放免| 欧美大片免费观看在线观看网站推荐| 久久精品国产2020观看福利| 久久精品人人爽| 日韩一区av在线| 超碰精品一区二区三区乱码| 久久视频在线看| 一区二区欧美激情| 欧美成人精品在线| 中文字幕少妇一区二区三区| 亚洲精品国产精品国自产观看浪潮| 中文字幕亚洲欧美在线| 国产免费一区二区三区在线能观看| 亚洲成人三级在线| 国产精品极品在线| 亚洲国产成人久久综合| 久久久国产成人精品| 久久人人爽人人爽人人片av高清| 91精品国产乱码久久久久久久久| 少妇精69xxtheporn| 久久久亚洲福利精品午夜| 国产69久久精品成人| 538国产精品视频一区二区| 日韩av免费在线播放| 亚洲免费人成在线视频观看| 国产在线视频91| 欧美成年人视频网站欧美| 一区二区三区国产在线观看| 欧美一级高清免费| 97久久久免费福利网址| 日韩经典第一页| 国产精品视频公开费视频| 国产综合久久久久| 久久亚洲精品网站| 国产成人精品在线视频| 欧美激情视频给我| 成人性生交大片免费看视频直播| 亚洲最大的成人网| 一本色道久久综合亚洲精品小说| 久久五月天综合| 91极品视频在线| 欧美另类极品videosbest最新版本| www.亚洲成人| 91沈先生在线观看| 久久频这里精品99香蕉| 欧洲一区二区视频| 日韩av在线精品| 九九精品在线观看| 欧美日韩精品中文字幕| 色妞欧美日韩在线| 亚洲精品国产精品乱码不99按摩| 亚洲人成啪啪网站| 久久精品成人动漫| 日韩在线观看免费| 国产精品一区二区久久| 久久久噜噜噜久久久| 国产精品v片在线观看不卡| 国语自产精品视频在线看一大j8| 欧美精品性视频| 91国自产精品中文字幕亚洲| 国产一区二中文字幕在线看| 欧美另类暴力丝袜| 国产精品久久久久久亚洲调教| 国产精品黄色影片导航在线观看| 国产专区欧美专区| 国产suv精品一区二区| xxx一区二区| 孩xxxx性bbbb欧美| 欧美精品成人在线| 高潮白浆女日韩av免费看| 欧美多人乱p欧美4p久久| 国产精品久久久久久久久粉嫩av| 亚洲在线免费观看| 亚洲人成在线免费观看| 最近中文字幕mv在线一区二区三区四区| 亚洲天堂日韩电影| xvideos成人免费中文版| 亚洲国产黄色片| 欧美激情亚洲综合一区| 少妇高潮 亚洲精品| 91老司机在线| 国产亚洲精品综合一区91| 欧美猛交ⅹxxx乱大交视频| 96sao精品视频在线观看| 久久精品人人爽| 成人h片在线播放免费网站| 欧美亚洲国产成人精品| 日韩电影免费观看在线| 欧美理论电影网| 亚洲区中文字幕| 欧美性色视频在线| 国产精品久久激情| 亚洲色图综合久久| 成人精品在线观看| 日韩精品视频在线播放| 秋霞成人午夜鲁丝一区二区三区| 久久成人精品电影| 亚洲第一精品夜夜躁人人爽| 亚洲精品一区中文| 亚洲欧美制服另类日韩| 国产午夜精品全部视频播放| 亚洲第一页中文字幕| 国产精品日韩在线| 在线观看亚洲区| 亚洲区一区二区| 国产精品久久久亚洲| 欧美专区中文字幕| 国产精品欧美激情| 亚洲欧美日本精品| 日韩国产欧美区| 午夜精品久久久久久99热| 日本精品视频网站| 日韩在线资源网| 精品久久久久久中文字幕大豆网| 91精品国产乱码久久久久久久久| 亚洲精品国产精品国自产观看浪潮| 亚洲乱码一区av黑人高潮| 国产成人精品午夜| 丁香五六月婷婷久久激情| 久久久久久久久久久久久久久久久久av| 亚洲精品一区二区三区不| 亚洲aⅴ男人的天堂在线观看| 中文字幕日韩欧美精品在线观看| 成人一区二区电影| 亚洲**2019国产|