国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SCA 應(yīng)用程序開發(fā),第 3 部分: 開發(fā)示例 SCA 應(yīng)用程序

2007 年 1 月 04 日

使用面向 Java 編程語言的 SCA 客戶機(jī)與實(shí)現(xiàn)模型構(gòu)建和集成應(yīng)用程序。本文說明了實(shí)現(xiàn)示例 SCA 應(yīng)用程序的基本步驟,包括本地和遠(yuǎn)程服務(wù)以及組裝各種服務(wù)。

引言

本文將說明開發(fā)和部署 SCA 應(yīng)用程序的主要概念。我們將說明如何創(chuàng)建組件實(shí)現(xiàn)來提供遠(yuǎn)程服務(wù)、本地服務(wù)、配置屬性和服務(wù)引用以及如何創(chuàng)建組件、入口點(diǎn)、外邊服務(wù)和模塊。

示例應(yīng)用程序:Innova Solutions 開發(fā)

我們將詳細(xì)說明一家名為 Innova solutions 的虛構(gòu)軟件公司所進(jìn)行的活動(dòng),該公司向其員工提供不同的服務(wù),以便查看自己的工資單信息、休假詳細(xì)信息、能力詳細(xì)信息、個(gè)人信息和績效評級。

以 下示例說明了構(gòu)建用于查看員工的工資單信息的服務(wù)的過程,可以通過 Web 應(yīng)用程序和 Web 服務(wù)客戶機(jī)訪問此服務(wù)。Innova solutions 將其應(yīng)用程序?qū)崿F(xiàn)為兩個(gè)模塊,從而提供了可重用性和靈活性。這兩個(gè)模塊分別為 Payroll 模塊和 Web 前端模塊:


圖 1. Payroll 模塊關(guān)系圖



innovasolutions.payrollmodule 模塊表示 payroll 服務(wù),此服務(wù)用于使用 Web 服務(wù)協(xié)議訪問遺留系統(tǒng)中的員工工資單信息。它包含以下內(nèi)容:

  • Payroll service component:提供遠(yuǎn)程 payroll 服務(wù),并提供有關(guān)員工基本工資、HRA、浮動(dòng)工資、付薪方式、所得稅和特惠稅的綜合說明。
  • Payroll data service component:通過接口與遺留系統(tǒng)連接,并向 payroll 服務(wù)提供有關(guān)基本工資、HRA、浮動(dòng)工資、獎(jiǎng)金和所得稅的信息。
  • External Tax rate rules service:提供不同收入水平的當(dāng)前稅率。
  • Entry point payroll service:將 payroll 服務(wù)通過 Web 服務(wù)綁定發(fā)布,以供 Web 服務(wù)客戶機(jī)模塊及其遠(yuǎn)程 Web 服務(wù)客戶機(jī)訪問。
  • Assembly:配置并連接模塊的所有元素。

下圖顯示了 Web front-end 模塊的不同組件:


圖 2. Payroll front-end 模塊



innovasolutions.webclientmodule 模塊可對用于將信息記錄到系統(tǒng)中和訪問員工工資單信息的基于瀏覽器的功能起到促進(jìn)作用。它包含以下內(nèi)容:

  • 用于處理 Web 請求和顯示員工工資單信息的 login HTML 文件、login servlet 和 payroll statement JSP。
  • login serviceprofile service 組件,用于提供管理員工狀態(tài)的本地服務(wù)。
  • External payroll service:用于訪問 innovasolutions.payrollmodule 的遠(yuǎn)程 payroll 服務(wù)。
  • Assembly:配置和連接模塊的所有元素。

應(yīng)用程序開發(fā)

示例應(yīng)用程序開發(fā)涉及到兩個(gè) SCA 模塊的開發(fā),下面我們將對此進(jìn)行介紹。

創(chuàng)建 innovasolutions.payrollmodule

SCA 模塊 innovasolutions.payrollmodule 是通過這樣構(gòu)建的:在文件系統(tǒng)中構(gòu)建一個(gè)名為 innovasolutions.payrollmodule 的文件夾,并在該文件夾的根目錄下放置一個(gè) sca.module 文件。

清單 1 顯示了 sca.module 的內(nèi)容,該文件是一個(gè) xml 文件。


清單 1. sca.module
					
<?xml version="1.0" encoding="ASCII"?>
<module xmlns="http://www.osoa.org/xmlns/sca/0.9"
name="innovasolutions.payrollmodule">
</module>

Payroll Data Service Implementation:我們首先創(chuàng)建由 PayrollDataService 服務(wù)提供的 PayrollDataService 接口;此服務(wù)向其員工提供工資單信息。然后,我們將創(chuàng)建 PayrollDataServiceImpl,以向 Innova solutions 的員工提供 PayrollDataService 服務(wù)。

我們創(chuàng)建名為 services/payrolldata 的子目錄,并將所有組成 PayrollDataServiceImpl 實(shí)現(xiàn)的文件放置到其中。

清單 2 顯示了 PayrollDataService Java 接口。


清單 2. PayrollDataService Java 接口
							
package services.payrolldata;
public interface PayrollDataService {
float getBasic(String employeeID);
float getvariablePay(String employeeID);
float getHRA(String employeeID);
float getProvidentFund(String employeeID);
float getConveyance(String employeeID);
float getIncomeTax(String employeeID);
float getProfessionalTax(String employeeID);
float getNetPay(String employeeID);
}

清單 3 說明了 PayrollDataServiceImpl Java 實(shí)現(xiàn)。


清單 3. PayrollDataServiceImpl Java 實(shí)現(xiàn)
							
package services.payrolldata;
@Service(PayrollDataService.class)
public class payrollDataServiceImpl implements payrollDataService {
public float getBasic(String employeeID){ . . . }
public float getVariablePay(String employeeID){ . . . }
public float getHRA(String employeeID){ . . . }
public float getProvidentFund(String employeeID){ . . . }
float getConveyance(String employeeID){ . . .}
float getProfessionalTax(String employeeID){ . . . }
public float getNetPay(String employeeID){ . . . }
}

上面的代碼片段實(shí)現(xiàn)了之前的 PayrollDataService 接口。在實(shí)現(xiàn)中使用了一個(gè) @Service Annotation 來聲明服務(wù)及其接口。

清單 4 顯示了上述實(shí)現(xiàn)的組件類型、side 文件。


清單 4. 組件類型、side 文件
							
<xml version="1.0" encoding="ASCII"?>
<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
<service name="payrollDataService">
<interface.java interface="services.payrolldata.PayrollDataService"/>
</service>
</componentType>

Payroll Data Service Component:SCA 組件是通過配置實(shí)現(xiàn)的引用屬性創(chuàng)建的。配置引用需要將其連接到其他組件提供的服務(wù)或外部服務(wù)。此處,我們將通過配置 PayrollDataServiceImpl 創(chuàng)建 PayrollDataServiceComponent。

將使用 component 元素將所創(chuàng)建的 SCA 組件添加到 sca.module 文件,該元素具有一個(gè) name 屬性,指定組件的名稱。

清單 5 顯示了創(chuàng)建 payrollDataServiceComponent 后的 sca.module 文件。


清單 5. 創(chuàng)建了 payrollDataServiceComponent 后的 sca.module 文件
							
<?xml version="1.0" encoding="ASCII"?>
<module xmlns="http://www.osoa.org/xmlns/sca/0.9"
name="innovasolutions.payrollmodule">
<component name="payrollDataServiceComponent">
<implementation.java class="services.payrolldata.PayrollDataServiceImpl">
</component>
</module>

創(chuàng)建 TaxRateRules Web 服務(wù)外部服務(wù):此處我們將創(chuàng)建一個(gè)外部服務(wù) TaxRateRulesService,以提供向 innovasolutions.payrollmodule 的員工提供 TaxRateRulesService 接口的服務(wù)。

我們首先創(chuàng)建一個(gè)名為 services/taxraterules 的子目錄,以將 TaxRateRulesService 外部服務(wù)所需的所有文件放入其中。業(yè)務(wù)合作伙伴實(shí)際實(shí)現(xiàn)此外部服務(wù),將提供一個(gè) TaxRateRulesService.wsdl。為了處理靜態(tài)數(shù)據(jù)類型,我們?yōu)?wsdl portType 創(chuàng)建了對應(yīng)的 Java 接口。

清單 6 顯示了 wsdl portType 的 Java 接口的大致情況。


清單 6. wsdl portType 的 Java 接口
							
package services.taxrate;
public interface TaxRateRulesService {
public float getTaxRate (Float taxableIncome);
}

接下來,我們將以下代碼添加到前面指定的 sca.module 文件,以創(chuàng)建名為 TaxrateRulesService 的外部服務(wù)。

清單 7 顯示了添加 TaxrateRulesService 后的 sca.module 文件。


清單 7. 添加 TaxrateRulesService 后的 sca.module 文件
							
<externalService name="TaxRateRulesService">
<interface.java interface="services.taxraterules.TaxRateRulesService"/>
<binding.ws port="http://www.taxrules.com/ TaxRateRulesService #
wsdl.endpoint(TaxRateRulesService / TaxRateRulesService SOAP)"/>
</externalService>

Payroll Service Implementation:此處我們將討論 PayrollServiceImpl 的實(shí)現(xiàn),該實(shí)現(xiàn)提供一個(gè)服務(wù),此服務(wù)在 innovasolutions.payrollmodule 中向其員工提供 PayrollService 接口。此實(shí)現(xiàn)使用兩個(gè)其他服務(wù)提供的接口引用這兩個(gè)服務(wù),即 PayrollDataService 接口(本地服務(wù))和 TaxRateRulesService 接口(外部服務(wù))。

我們將首先創(chuàng)建名為 services/payroll 的子目錄,并將所有組成 PayrollServiceImpl 實(shí)現(xiàn)的文件放入其中。

清單 8 顯示了 PayrollService Java 接口。


清單 8. PayrollService Java 接口
							
package services.payroll;
import org.osoa.sca.annotations.Remotable;
@Remotable
public interface PayrollService{
public PayrollStatement getPayrollStatement(String employeeID);

上面的 PayrollService Java 接口包含一個(gè) getPayrollStatement() 方法,其參數(shù)是 employeeID,將返回 PayrollStatement 對象。由于這需要為外部服務(wù),因此使用 @Remotable Annotation 將接口聲明為遠(yuǎn)程接口。在此實(shí)現(xiàn)中,通過遠(yuǎn)程服務(wù)交換的所有參數(shù)都是服務(wù)數(shù)據(jù)對象(Service Data Objects,SDO)類型的數(shù)據(jù)。

清單 9 顯示了 PayrollStatement Java 接口。


清單 9. PayrollStatement Java 接口
							
package services.payroll;
import java.util.List;
public interface PayrollStatement {
List getPayrollDetails();
float getNetPay();
}

清單 10 顯示了 PaySplitUP Java 接口。


清單 10. PaySplitUP Java 接口
   
package services.payroll;
public interface PaySplitUP {
String getPaycategory();
void setPaycategory(String payCategory);
void setEarnings();
void setDeductions();
float getEarnings();
float getDeductions();
}

清單 11 說明了 PayrollServiceImpl Java 實(shí)現(xiàn)類。


清單 11. PayrollServiceImpl Java 實(shí)現(xiàn)類
    
package services.payroll;
import java.util.List;
import commonj.sdo.DataFactory;
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Reference;
import services.payrolldata.PayrollDataService;
import services.taxrate.TaxRateRulesService;
public class PayrollServiceImpl implements PayrollService {
@Property
private String currency = "INR";
@Reference
private PayrollDataService payrollDataService;
@Reference
private TaxRateRulesService taxraterulesService;
public PayrollStatement getPayrollStatement (String employeeID) {
DataFactory dataFactory = DataFactory.INSTANCE;
PayrollStatement payrollStatement =
(PayrollStatement)dataFactory.create(PayrollStatement.class);
List payslip = payrollStatement.getPayrollDetails();
float basic = payrollDataService.getBasic(employeeID);
PlaySplitUP basicSalary
= (PlaySplitUP)dataFactory.create(PlaySplitUP.class);
basicSalary.setPaycategory("BASIC");
basicSalary.setEarnings(currencyConverter(basic));
payslip.add(basicSalary);
. . . . . . . code for HRA . . . .
. . . . . . . code for Variable pay . . . .
. . . . . . . code for conveyance. . . .
. . . . . . . code for Profident fund . . . .
float IncomeTaxAmount = payrollDataService.getIncomeTax(employeeID);
PlaySplitUP IncomeTax
= (PlaySplitUP)dataFactory.create(PlaySplitUP.class);
IncomeTax.setPaycategory("INCOMETAX");
IncomeTax.setDeductions(currencyConverter(IncomeTaxAmount));
payslip.add(IncomeTax);
. . . . . . . code for Professional Tax . . . . . .
return payrollStatement;
}
private float currencyConverter(float value){
if (currency.equals("INR")) return value;
else
if (currency.equals("USD")) return value * 45.5f;
else return 0.0f;
}
}

上面所示的 PayrollServiceImpl 類實(shí)現(xiàn)了 PayrollService 接口。PayrollServiceImpl 使用 @Reference Annotation 定義了兩個(gè)成員變量,以引用另外兩個(gè)服務(wù),即 PayrollDataServiceTaxRateRulesService。SCA 運(yùn)行時(shí)通過注入解析這些引用。PayrollServiceImpl 使用 @Property Annotation 在運(yùn)行時(shí)配置成員變量 currency。PayrollStatement 對象是使用 SDO 數(shù)據(jù)工廠 API 作為服務(wù)數(shù)據(jù)對象 (SDO) 創(chuàng)建的。

清單 12 顯示了上述 PayrollServiceImpl 的組件類型文件。


清單 12. PayrollServiceImpl 的組件類型文件
    
<?xml version="1.0" encoding="ASCII"?>
<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<service name="PayrollService">
<interface.java interface="services.payroll.PayrollService"/>
</service>
<reference name="payrollDataService">
<interface.java interface="services.payrolldata.PayrollDataService"/>
</reference>
<reference name="stockRatestockQuoteService">
<interface.java interface="services.taxRateRules.TaxRateRulesService"/>
</reference>
<property name="currency" type="xsd:string" default="INR"/>
</componentType>

Payroll Service Component:現(xiàn)在我們將通過配置上面實(shí)現(xiàn)的 PayrollServiceImpl 來創(chuàng)建 PayrollServiceComponent。我們將對上面指定的 sca.module 文件添加若干行代碼來包括 PayrollServiceComponent,如清單 13 中所示。


清單 13. 添加了額外代碼行的 sca.module 文件
			
<component name="PayrollServiceComponent">
<implementation.java class="services.payroll.payrollServiceImpl"/>
<properties>
<v:currency>INR</v:currency>
</properties>
<references>
<v:payrollDataService>PayrollDataServiceComponent</v:payrollDataService>
<v:taxRateRulesService>TaxRateRulesService</v:taxRateRulesService>
</references>
</component>

創(chuàng)建 payroll 服務(wù) Web 服務(wù)入口點(diǎn):下一步我們將創(chuàng)建名為 PayrollService 的入口點(diǎn)來發(fā)布 PayrollService,以便 Web 服務(wù)客戶機(jī)能夠訪問 PayrollService。需要首先創(chuàng)建 SCA 運(yùn)行時(shí)用于綁定到入口點(diǎn)的 WSDL 定義文件,然后才能在 sca.module 文件中創(chuàng)建入口點(diǎn)。我們向 sca.module 文件添加數(shù)行代碼來表示 PayrollService 入口點(diǎn)的創(chuàng)建。

清單 14 顯示了添加到上面指定的 sca.module 文件中的代碼行。


清單 14. 添加了額外代碼行的指定 sca.module 文件
    
<entryPoint name="PayrollService">
<interface.java interface="services.payroll.PayrollService"/>
<binding.ws port="http://www.innovasolutions.com/PayrollService#
wsdl.endpoint(PayrollService/PayrollServiceSOAP)"/>
<reference>PayrollServiceComponent</reference>
</entryPoint>

創(chuàng)建 innovasolutions.webclientmodule

在 此部分,我們將創(chuàng)建 Innova Solutions Web 應(yīng)用程序,以訪問名為 payroll service 的外部服務(wù),此服務(wù)使用了本地服務(wù)組件、SCA 范圍管理、JSP 和 Servlet。Innova Solutions Web 應(yīng)用程序允許其員工登錄并使用范圍確定為 HTTP 會(huì)話的本地服務(wù)跟蹤自己的概要,還向其提供了對工資單系統(tǒng)的訪問和顯示他們每月的工資單。它將首先把用戶導(dǎo)航到登錄頁,然后前進(jìn)到工資單系統(tǒng),在其中顯示 每月的工資單。

以下各個(gè)部分將說明如何創(chuàng)建 InnovaSolutions Web 應(yīng)用程序外部的各個(gè) SCA 服務(wù),即 login、user profile 和 payroll。然后我們將了解如何由 Servlet、JSP 和標(biāo)記庫訪問這些服務(wù),以提供用戶界面。

我 們將首先實(shí)現(xiàn) LoginServiceImpl,此服務(wù)負(fù)責(zé)將用戶登錄到應(yīng)用程序中。LoginServiceImpl 提供服務(wù) LoginService,該服務(wù)在 innovasolutions.webclientmodule 中向員工提供 LoginService 接口。

首先,我們創(chuàng)建名為 services/profile 的子文件夾,并將屬于 LoginServiceImpl 實(shí)現(xiàn)的所有文件放入其中。

清單 15 顯示了 LoginService Java 接口。


清單 15. LoginService Java 接口
							
package services.profile;
public interface LoginService{
public static final int SUCCESS = 1;
public static final int INVALID_LOGIN = -1;
public static final int INVALID_PASSWORD = -2;
public int login(String employeeID, String password);
}

接下來,編寫實(shí)現(xiàn) LoningService 接口的 LoginServiceImpl Java 實(shí)現(xiàn),該實(shí)現(xiàn)使用其接口 profileservice 引用本地服務(wù)。

清單 16 給出了 LoginServiceImpl Java 實(shí)現(xiàn)。


清單 16. LoginServiceImpl Java 實(shí)現(xiàn)
	
package services.profile;
import org.osoa.sca.annotations.Service;
import org.osoa.sca.annotations.Reference;
@Service(LoginService.class)
public class LoginServiceImpl implements LoginService{
@Reference
private ProfileService profileService;
public int login(String employeeID, String password) { …. }
}

上面的 LoginServiceImpl 實(shí)現(xiàn)了 LoginService 接口,并使用其接口 profileservice 引用本地服務(wù)。

Login Component:此處我們將通過配置 LoginServiceImpl 實(shí)現(xiàn)來創(chuàng)建 LoginServiceComponent。讓我們看看顯示包含 LoginServiceComponent 的 innovasolutions.webclientmodule 的 sca.module 文件的代碼。

清單 17 顯示了 innovasolutions.webclientmodule 的 sca.module 文件。


清單 17. innovasolutions.webclientmodule 的 sca.module 文件
	
<?xml version="1.0" encoding="ASCII"?>
<module xmlns="http://www.osoa.org/xmlns/sca/0.9"
xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
name="innovasolutions.webclientmodule">
<component name="LoginServiceComponent">
<implementation.java class="services.profile.LoginServiceImpl"/>
</component>
</module>

Profile Service Implementation:在此部分,我們將簡要地給出 profileServiceImpl,此實(shí)現(xiàn)提供了由接口 ProfileService 訪問的服務(wù)。通過使用 ProfileService,可以在用戶的 Web 應(yīng)用程序內(nèi)導(dǎo)航時(shí)跟蹤用戶狀態(tài)。我們使用前面創(chuàng)建的子文件夾 services/profile 來放置組成 profileServiceImpl 實(shí)現(xiàn)的所有文件。

profileService Java 接口使用 @Scope Annotation 來聲明 ProfileServiceImpl 實(shí)例的范圍由會(huì)話確定。

清單 18 顯示了 ProfileService Java 接口。


清單 18. ProfileService Java 接口
    
package services.profile;
import org.osoa.sca.annotations.Scope;
@Scope("session")
public interface ProfileService{
public String getFirstName();
public void setFirstName(String pName);
public String getLastName();
public void setLastName(String pName);
public boolean isLoggedIn();
public void setLoggedIn(boolean pStatus);
public String getId();
public void setId(String pId);
}

ProfileServiceImpl 實(shí)現(xiàn)了 ProfileService Java 接口。清單 19 說明了 ProfileServiceImpl Java 實(shí)現(xiàn)。


清單 19. ProfileServiceImpl Java 實(shí)現(xiàn)
    
package services.profile;
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Scope;
import org.osoa.sca.annotations.Service;
@Service(ProfileService.class")
@Scope("session")
public class ProfileServiceImpl implements ProfileService{
@Property
private String firstName;
. . . . . .
}
}

Profile Service Component:現(xiàn)在我們將清單 20 中所示的代碼片段添加到 innovasolutions.webclientmodule 的 sca.module 文件中,從而創(chuàng)建 ProfileServiceComponent。


清單 20. 添加了額外代碼行的 sca.module 文件
<component name="ProfileServiceComponent">
<implementation.java class="services.profile.ProfileImpl"/>
<properties>
<v:firstName>Anonymous</v:firstName>
</properties>
</component>

清單 21 顯示了在 component 元素下添加的三行代碼 LoginServiceComponent。


清單 21. LoginServiceComponent
	
<references>
<v:profileService>ProfileServiceComponent</v:profileService>
</references>

Payroll Service Web Service External Service:在此部分,我們將創(chuàng)建名為 PayrollService 的外部服務(wù),該接口在 innovasolutions.webclientmodule 中向用戶提供名為 PayrollService 的接口。

我 們首先創(chuàng)建一個(gè)名為 services/payroll 的子目錄,以將 PayrollService 外部服務(wù)所需的所有文件放入其中。此外部服務(wù)提供一個(gè) PayrollService.wsdl 文件。我們?yōu)?wsdl portType 創(chuàng)建對應(yīng)的 Java 接口,即 PayrollService、PayrollStatementPaySplitUP,以便在使用 PayrollService 時(shí)處理靜態(tài) Java 類型。

最后,我們添加清單 22 中所示的代碼,以在 innovasolutions.webclientmodule 的 sca.module 文件中創(chuàng)建名為 PayrollService 的外部服務(wù)。


清單 22. 經(jīng)過修改以創(chuàng)建 PayrollService 的 sca.module 文件
	
<externalService name="PayrollService">
<interface.java interface="services.account.PayrollService"/>
<binding.ws port="http://www.innovasolutions.com/PayrollService#
wsdl.endpoint(PayrollService/PayrollServiceSOAP)"/>
</externalService>

Login HTML 頁:login.html 頁將當(dāng)前用戶的用戶名和密碼發(fā)送給 login Servlet。

Login Servlet:login Servlet 處理從 login.html 獲得的用戶名和密碼,并使用 ModuleContext API 調(diào)用 login 本地服務(wù)。CurrentModuleContext.getContext() 返回當(dāng)前的模塊上下文,并隨后調(diào)用 locateService("LoginServiceComponent") 查詢本地服務(wù)。

Payroll Statement JSP: PayrollStatement.JSP 顯示 payroll 服務(wù)返回的員工的所有工資單信息。為了讓 Payroll Statement 頁不受實(shí)現(xiàn)細(xì)節(jié)的限制,Payroll Statement.jsp 使用了一系列 JSP 標(biāo)記,即 login 標(biāo)記service 標(biāo)記payroll status 標(biāo)記。

部署

以下部分對子系統(tǒng)構(gòu)件進(jìn)行說明。

創(chuàng)建 innovasolutions.payrollsubsystem

在此部分,我們將創(chuàng)建 innovasolutions.payrollsubsystem,此子系統(tǒng)對 innovasolutions.payroll 模塊進(jìn)行配置。首先,在文件系統(tǒng)中創(chuàng)建名為 innovasolutions.payrollsubsystem 的文件夾,并在根目錄放置 sca.subsystem 文件。

清單 23 顯示了 innovasolutions.payrollsubsystem 的 sca.subsystem 文件。


清單 23. innovasolutions.payrollsubsystem 的 sca.subsystem 文件
	
<?xml version="1.0" encoding="ASCII"?>
<subsystem xmlns="http://www.osoa.org/xmlns/sca/0.9"
name="innovasolutions.payrollsubsytem">
<moduleComponent
name="PayrollModuleComponent"module="innovasolutions.payrollmodule"/>
</subsystem>

創(chuàng)建 innovasolutions.webclientsubsystem

在此部分,我們將創(chuàng)建 innovasolutions.webclientsubsystem,此子系統(tǒng)對 innovasolutions.webclient 模塊進(jìn)行配置。首先,在文件系統(tǒng)中創(chuàng)建名為 innovasolutions.webclientsubsystem 的文件夾,并在根目錄放置一個(gè) sca.subsystem 文件。

清單 24 顯示了 innovasolutions.webclientsubsystem 的 sca.subsystem 文件。


清單 24. innovasolutions.webclientsubsystem 的 sca.subsystem 文件
    
<?xml version="1.0" encoding="ASCII"?>
<subsystem xmlns="http://www.osoa.org/xmlns/sca/0.9"
xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
name="innovasolutions.webclientsubsytem">
<moduleComponent name="WebClientModuleComponent"
module="innovasolutions.webclientmodule">
<references>
<v:PayrollService>innovasolutions.payrollsunbsystem/
PayrollModuleComponent/PayrollService</v:PayrollService>
</references>
</moduleComponent>
</subsystem>






結(jié)束語

我們已經(jīng)演示了應(yīng)用程序 Innova Solutions 開發(fā)過程,以幫助您使用 SCA 客戶機(jī)和實(shí)現(xiàn)模型利用 Java 編程語言構(gòu)建和集成應(yīng)用程序。SCA 應(yīng)用程序提供了服務(wù)的可移植性、可重用性和靈活性,從而將開發(fā)人員從中間件編程的復(fù)雜性中解放出來。



參考資料



作者簡介


Sreedevi Penugonda 是 IBM Java 技術(shù)中心的一位系統(tǒng)軟件工程師。她專長于分布式對象計(jì)算系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)及算法和操作系統(tǒng)



Rakesh Kumar Dash 是 IBM Java 技術(shù)中心的一位系統(tǒng)軟件工程師。他對 RMI 和 ORB 開發(fā)進(jìn)行了廣泛的研究。他所感興趣的領(lǐng)域包括 SOA、Web 服務(wù)、CORBA 和操作系統(tǒng)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
在 Apache Tuscany 上開發(fā)基于 SCA 的 Web 2.0 應(yīng)用
SCA(Service Component Architecture)編程模型入門
使用服務(wù)組件體系結(jié)構(gòu)構(gòu)建 SOA 解決方案——第 3 部分
Getting started with Tuscany
誰最需要SOA:企業(yè)用戶還是軟件SI
用NetBean6開發(fā)OSGi應(yīng)用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服