½éÉÜ
ÕâÆªÓû§Ö¸ÄϰïÖúÄãÊìϤSCA¸ÅÄ²¢ÇÒ´øÄãä¯ÀÀʾ·¶ÔõÑù´´½¨SCA Ó¦ÓõÄÒ»¸öÀý×Ó¡£ËüҲ˵Ã÷ÁËTuscanyÖ§³ÖµÄ¶àÖÖ²»Í¬»·¾³£¨ÀýÈçÃüÁîÐпͻ§¶Ë»òWebÓ¦Óã©ÒÔ¼°ÈçºÎ´ò°ü³ÌÐòÒÔÔËÐÐÔÚÕâÐл·¾³ÖС£
±¾ËµÃ÷»òÐí²»ÐèÒª£¬ÒòΪ´´½¨Ò»¸öSCAÓ¦Óúܼòµ¥¡£TuscanyºÍSCAµÄÖ÷ҪĿµÄÖ®Ò»ÊÇ£¬±ÜÃâÇ¿¼ÓµÄ¹æÔòºÍÒªÇó£¬ÒÔÖÆÔ¼ÈçºÎÈ¥±àдӦÓá£ÎÒÃÇÏëÈóÌÐòÔ±ÔÚ¿ª·¢Ó¦ÓõÄʱºò£¬²»Óõ£ÐĽ«Òª±»Ê¹ÓõĻ·¾³¡£»ù±¾ÉÏ£¬ÄãÊÇΪÁËÐËȤ¶øÐ´´úÂ룬TuscanyÌṩ»·¾³ÈÃËüÔËÐС£Òò´Ë£¬±¾Ö¸ÄÏÖ»ÊÇÒ»¸öÀý×Ó£¬ËµÃ÷ÔõÑù¿ª·¢SCAÓ¦Ó㬶ø²»ÊÇÒ»¸ö¹æÔò¡£
SCA¿ìËÙÖ¸ÄÏ
SCA¿ìËÙÖ¸ÄϸøÄã×öSCA¸ÅÄîµÄ¸ÅÊö£¬²¢ÇÒΪÏÂÃæµÄÀý×Ó¸øÄã´òºÃ»ù´¡¡£Èç¹ûÄãÒѾÊìϤSCA£¬ÇëÂÔ¹ý´ÎÕ¡£
Àý×Ó¸ÅÒª
ÎÒÃǽ«Ê¹ÓÃÕâ¸ö¼ÆËãʾÀýÈçºÎ¿ª·¢Ò»¸öSCA Ó¦Óᣠ¹ËÃû˼Ò壬Õâ¸öÀý×ÓÊÇʵÏÖµäÐ͵ļÆËã²Ù×÷¡£µäÐͲÙ×÷¾ÍÊǸøÁ½¸öÊý×Ö±»ÒªÇó¶ÔÕâÁ½¸öÊý×Ö½øÐÐһЩ²Ù×÷£¬ÎÒÃǵļÆËã³ÌÐò½«ÄÜ´¦Àí¼Ó¼õ³Ë³ýËÄÔòÔËËã¡£
ÎÒÃÇ¿ªÊ¼ÓÚÒ»¸ö¼òµ¥µÄ¼ÆËã³ÌÐò²¢»áÖð½¥µÄÀ©Õ¹Ò»Ð©¸ß¼¶SCAÌØÐÔ¡£
¶ÔÓÚSCAµÄ¸ü¶àϸ½Ú£¬Çë²Î¿¼Ïà¹Ø¹æ·¶£¬´ò¿ªSCAÍøÕ¾¡£
×¼±¸
ÏÂÔØTuscany Java SCA release
ÏÂÔØ±ØÒªµÄ£º
Java 5
Maven 2.0.4+ »òÕß Ant 1.7.0
ÔËÐÐʾÀý
Calculator ³ÌÐòËæ×ÅSCA¶þ½øÖưüÒ»Æð·Ö·¢£¬ÔÚÎÒÃÇ¿ªÊ¼±àдËü֮ǰÏÈÔËÐÐÒ»ÏÂʾÀý£¬ºÜ¼òµ¥£¡
µ½../samples/calculator Ŀ¼
ant run
Èç¹ûÄã´òËãÖ±½ÓʹÓÃÃüÁîÐÐÀ´Ö´ÐÐÀý³Ì£¬ÄÇôʹÓÃÒÔϵÄÃüÁî
java -cp ....lib uscany-sca-manifest.jar;targetsample-calculator.jar
calculator.CalculatorClient
Ò»ÇÐÕý³£µÄ»°£¬Ä㽫»áµÃµ½ÒÔϽá¹û£º
3 + 2=5.0
3 - 2=1.0
3 * 2=6.0
3 / 2=1.5
Èç¹ûÄãʹÓõÄÊÇÔ´´úÂë·Ö·¢°üµÄ»°£¬ÎÒÃǽ¨ÒéÄãʹÓÃMaven¹¹½¨²¢ÔËÐÐÕâ¸ö¼ÆËãÆ÷ʵÀý£¬ÒòΪtuscany-sca-manifest.jar
ÊDz»ËæÔ´´úÂë·Ö·¢°üÒ»ÆðÌṩµÄ£¬ËüÊǰüº¬ÔÚ¶þ½øÖÆ·Ö·¢°üÄÚ£¬Ëü°üº¬ÁËÈ«²¿µÄtuscanyµÄjar°ü£¬ÕâÑù¿ÉÒÔÈÃÔËÐÐʵÀýµÄÃüÁîÐÐÆ¯ÁÁÇұȽ϶̡£
¹¹½¨CalculatorʵÀý
Ä㽫ѧµ½µÄ
Õâ¸öÀý×Ó˵Ã÷£¬µ±Ä㼯ÖÐÓÚÒµÎñÂß¼µÄʱºò£¬ÈçºÎ¶¨ÒåÄãµÄ³ÌÐò¡£±¾½Ì³Ì»á´øÄãͨ¹ýһϵÁв½Öè¹¹½¨Ò»¸ö½Ð×öcalculatorµÄ¼¯³É¹¹½¨Ó¦Óã¬ÔÚÕâ¸ö¼¯³ÉÓ¦ÓÃÖÐËùÓÐ×é¼þ¼äµÄÁ¬½ÓÆ÷¶¼ÊDZ¾µØµÄ£¬Ê¹ÓÃjava¶¨ÒåµÄ½Ó¿Ú¡£
ʵÀýͨÀÀ
²½Öè1£º¶¨ÒåËùÐèÒªµÄ¹¦Äܿ飺¿¼ÂÇÏÂÄãµÄÓ¦ÓÃÈçºÎ±»·Ö½âΪһ¸ö¸ö½ÏСµÄ¹¦ÄÜ/·þÎñ£¬Ã¿¸ö¿é¶¼ÊÇÒ»¸ö¿ÉÒÔÔÚ×ܵÄÓ¦ÓÃÀïʹÓõÄÂß¼²Ù×÷µ¥Ôª£¬ÕâÑùµÄ»°£¬CalculatorÓ¦ÓÿÉÒÔ±»·ÖΪÎå¸ö¹¦Äܿ飺AddService£¨¼Ó£©¡¢SubstractService£¨¼õ£©¡¢MultiplyService£¨³Ë£©¡¢DivideService£¨³ý£©ºÍÒ»¸öÖ÷¹¦Äܿ飬Æð½ÓÊÕÇëÇó²¢Òýµ¼µ½ÕýÈ·²Ù×÷µÄ¿ØÖÆÆ÷µÄ×÷Óá£ÎÒÃÇ¿ÉÒÔ½ÐÕâ¸ö¿ØÖÆÆ÷ΪCalculatorService¡£

²½Öè2£ºÊµÏÖÿ¸ö¹¦Äܿ飺¼ÈÈ»ÄãÒѾʶ±ðÁËÓ¦ÓÃÖеŦÄܿ飬ÏÖÔÚ½«×¼±¸´´½¨ËüÃÇ¡£ÔÚSCAÀ¹¦ÄÜÐÔµÄ¿é³ÆÎª×é¼þ£¬ÄÇôÈÃÎÒÃÇ¿´¿´ÈçºÎȥʵÏÖÒ»¸ö×é¼þ¡£ÎÒÃǽ«°ÑAddService×é¼þ×÷ΪÎÒÃǵĵÚÒ»¸öÀý×Ó¡£
AddService×é¼þ½«ÌṩÁ½ÊýÏà¼ÓµÄ·þÎñ¡£Ã¿µ±Ö´ÐÐÏà¼Ó²Ù×÷µÄʱºò£¬CalcualtorService×é¼þ¾Í»áʹÓÃAddService×é¼þ¡£Èç¹ûÎÒÃÇʹÓÃjavaÀ´±àдAddService×é¼þµÄ»°£¬ÎÒÃÇ´ÓÃèÊöÒ»¸ö£¨Java£©½Ó¿Ú¿ªÊ¼¡£
public interface AddService {
double add(double n1, double n2);
} |
ÏÖÔÚ£¬ÎÒÃÇÌṩÕâ¸ö½Ó¿ÚµÄʵÏÖ¡£
public class AddServiceImpl implements AddService {
public double add(double n1, double n2) {
return n1 + n2;
}
} |
µÈµÈ£¡ÎÒÃDz»ÊÇÔÚдһ¸öSCA×é¼þô£¿ÄÇÒ»¶¨ÊǺܸ´Ôӵ쬽ö½öÖ»ÓÐJava½Ó¿ÚºÍʵÏÖ£¬ÕâÊǶԵÄô£¿àÅ£¬Êµ¼ÊÉÏÒ»¸öSCA×é¼þ¿ÉÒÔÊÇÒ»¸öÆÕͨµÄJava£¬Òò´ËÎÒÃÇÒѾ×öÍêÁËʵÏÖÕâ¸öSCA
AddService×é¼þËùÐèÒªµÄ±àÂë¡£ÎÒÃÇÄÜʹÓÃSCA±©Â¶AddService×é¼þÔÚÈκÎÖ§³ÖµÄ°ó¶¨ÉÏÌṩ·þÎñ£¬ÀýÈ磬WebServices£¬JMS»òÕßRMI£¬²»ÐèÒª¸ü¸ÄAddServiceµÄʵÏÖ¡£
ÈÃÎÒÃÇ¿´Ò»ÏÂCalculatorService×é¼þ£¬ÕâºÜÓÐȤÒòΪËü»áµ÷ÓÃAddService×é¼þ£¬ÔÚÍêÕûÓ¦ÓÃÖУ¬Ëü»áµ÷ÓÃSubtractService¡¢MultiplyServiceÒÔ¼°DivideService
×é¼þ£¬µ«ÎÒÃÇĿǰ»áºöÂÔÆäËûµÄ£¬ÒòΪËüÃǺÍÎÒÃÇʵÏÖµÄAddServiceÊÇÒ»¸öģʽ¡£
ÎÒÃǽ«ÔٴδӶ¨ÒåÒ»¸ö½Ó¿Ú¿ªÊ¼£¬ÒòΪCalcultorServiceÊÇÒ»¸ö×ÔÉíÌṩ¸øÆäËû³ÌÐòµ÷ÓõĽӿڡ£
public interface CalculatorService {
double add(double n1, double n2);
double subtract(double n1, double n2);
double multiply(double n1, double n2);
double divide(double n1, double n2);
} |
ÏÖÔÚ£¬ÎÒÃÇʵÏÖÕâ¸ö½Ó¿Ú¡£
public class CalculatorServiceImpl implements CalculatorService {
private AddService addService;
private SubtractService subtractService;
private MultiplyService multiplyService;
private DivideService divideService;
@Reference
public void setAddService(AddService addService)
{
this.addService = addService;
}
...set methods for the other attributes would
go here
public double add(double n1, double n2) {
return addService.add(n1, n2);
}
...implementations of the other methods would
go here
} |
²½Öè3£º×é×°Ó¦ÓãºÄÇô£¬ÎÒÃǸÃÈçºÎÈÃÕâÁ½¸ö×é¼þÔËÐÐÄØ£¿ÎÒÃǵ±ÖеÄJava³ÌÐòԱ˵ÁË£¬Ð´Ò»¸ömainº¯Êý£¬È»ºó¾Í¿ÉÒÔ½«Á½¸ö×é¼þÁªÏµµ½Ò»ÆðÈ»ºóÔËÐУ¬ÕâÑù×öºÜ¼òµ¥¡£
public class CalculatorClient { public static void main(String[] args) throws Exception {
CalculatorServiceImpl calculatorService = new
CalculatorServiceImpl();
AddService addService = new AddServiceImpl();
calculatorService.setAddService(addService);
System.out.println("3 + 2=" + calculatorService.add(3,
2));
// calls to other methods go here if we have implemented
SubtractService, MultiplyService, DivideService
}
} |
µ«ÕâÑù×ö£¬Ã»ÓÐʹÓÃTuscany SCAÔËÐÐʱ£¬Ò²Ã»Óн«´úÂëÑÓÕ¹ÖÁÌṩWebservice½Ó¿Ú£¬ÄÇÑùµÄ»°£¬»áÉÔ΢¸´ÔÓЩ¡£ÄÇô£¬ÎÒÃÇÔõÑù×ö¿ÉÒÔÈÃËüÔËÐÐÔÚTuscanyÄÚ£¬¿ÉÒԵõ½ºÜ¶àÏñ×ÔÓÉÌṩWebserviceÄÇÑùµÄÌØÐÔ?Ê×ÏÈ£¬ÔÚÎÒÃǵ÷ÓÃÕâЩ×é¼þǰ£¬Ïȸıä¿Í»§¶ËÒÔÆô¶¯Tuscany
SCAÔËÐÐʱ¡£
public class CalculatorClient { public static void main(String[] args) throws Exception {
SCADomain scaDomain = SCADomain.newInstance("Calculator.composite");
CalculatorService calculatorService = scaDomain.getService(CalculatorService.class,
"CalculatorServiceComponent");
System.out.println("3 + 2=" + calculatorService.add(3,
2));
// calls to other methods go here if we have implemented
SubtractService, MultiplyService, DivideService
scaDomain.close();
}
} |
Äã¿ÉÒÔ¿´µ½ÎÒÃÇ´ÓʹÓþ²Ì¬·½·¨´´½¨Ò»¸öSCADomain×ÔÉíʵÀý¿ªÊ¼¡£SCADomainÊÇÒ»¸öSCA¸ÅÄ±íʾһ¸öSCAϵͳµÄ±ß½ç¡£Ëü¿ÉÒÔ¿çºÜ¶à´¦ÀíÆ÷²¿Êð£¬ÏÖÔÚ£¬ÈÃÎÒÃÇÏȹØ×¢ËüÓëÔÚµ¥JavaÐéÄâ»úÄÚÔËÐС£
²ÎÊý"Calculator.composite"Ö¸µÄÊǸæËßSCA
ÕâЩ×é¼þÔÚÎÒÃǼÆËãÆ÷Ó¦ÓÃÄÚÈçºÎ¼¯³É¹¤×÷µÄÒ»¸öXML Îļþ¡£ÕâÀïÊÇCalculator.compositeÄÚµÄXML¡£
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="Calculator">
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
<reference name="addService" target="AddServiceComponent"
/>
<!-- references to SubtractComponent, MultiplyComponent
and DivideComponent -->
</component>
<component name="AddServiceComponent">
<implementation.java class="calculator.AddServiceImpl"/>
</component>
<!-- definitions of SubtractComponent, MultiplyComponent
and DivideComponent -->
</composite> |
¿ÉÒÔ¿´µ½ÎÒÃÇÔÚÕâÀﶨÒåÁËÁ½¸ö×é¼þ²¢ÇÒÖ¸¶¨ÁËTuscany SCAÐèÒª¼ÓÔØÈ¥ÊµÏÖÒµÎñ¼ÆËãµÄJavaʵÏÖÀà¡£ËüÃÇÊÇÎÒÃǸոÕʵÏÖµÄÄÇЩÀà¡£
ÐèҪעÒâµÄÊÇ£¬CalculatorServiceComponentÓµÓÐÒ»¸ö¶ÔaddServiceµÄÒýÓã¬ÔÚÕâ¸öXMLÅäÖÃÎļþÀÕâ¸öÒýÓÃÄ¿±êÊÇAddServiceComponent¡£µ±ÎÒÃÇʵÏÖCalculatorServiceImplʱ£¬ÒýÓÃÃû×Ö"addService"£¬ÓëÎÒÃǽ¨Á¢µÄaddService
ÁìÓòµÄÃû×ÖÏàÅ䣬Õâ²»ÊÇÇɺϡ£Tuscany SCAÔËÐÐʱ´ÓXmlÅäÖÃÎļþ½âÎöÕâЩÐÅÏ¢£¬²¢ÇÒÓÃÀ´´´½¨ÃèÊöÎÒÃÇcalculatorÓ¦ÓóÌÐòµÄ¶ÔÏóºÍ¹ØÏµ¡£ËüÊ×ÏÈ´´½¨ÁËAddServiceImpl
ºÍCalcualtorSreviceImplµÄʵÀý£¬È»ºó½«AddServiceImplÒýÓÃ×¢Èëµ½CalculatorServiceImpl¶ÔÏóµÄaddService×Ö¶ÎÓò¡£Èç¹ûÄã»Ø¹ýÍ·À´¿´ÏÂÎÒÃÇÈçºÎʵÏÖµÄCalculatorService£¬Äã»á·¢ÏÖ@Reference×¢ÊÍ£¬Ëü¸æËßSCAÄÄЩ×Ö¶Î/ÓòÐèÒª±»×Ô¶¯ÉèÖá£ÕâÏ൱ÓÚÀ´×ÔÎÒÃÇÕý³£µÄJava¿Í»§¶Ë´úÂë¡£
CalculatorServiceImpl calculatorService = new CalculatorServiceImpl(); AddService addService = new AddServiceImpl(); calculatorService.setAddService(addService); |
Ò»µ©ÅäÖÃÎļþ±»SCADomain¼ÓÔØ£¬ÎÒÃǵĿͻ§¶Ë´úÂë¾Í»áÒªÇóSCADomainÌṩCalculatorServiceComponent×é¼þµÄ¶ÔÏóʵÀýÒýÓá£
CalculatorService calculatorService = scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent"); |
ÎÒÃÇÏÖÔÚʹÓÃÕâ¸öÒýÓþͺÃÏñÊÇÎÒÃÇ×Ô¼º´´½¨µÄÒ»Ñù£¬ÀýÈ磬À´×ÔÓÚCalculatorServiceImpl.add()·½·¨ÊµÏÖ£º
return addService.add(n1, n2); |
SCA¹æ·¶ÍùÍùʹÓÃͼ½âµÄÐÎʽÃèÊöSCAÓ¦Óã¬ÕâÍùÍùÓÐÀûÓÚ¿ìËٵĸÅÀÀÓÐ˵Ã÷×é¼þ×é³ÉÁ˸ÃÓ¦ÓÃÒÔ¼°ÈçºÎ½«ËüÃÇÁªÏµÔÚÒ»Æð£¬Èç¹ûÎÒÃǻһÕÅÎÒÃǸոմ´½¨µÄcalculatorÀý×ÓµÄͼ£¬ÎÒÃÇ»áµÃµ½ÈçÏÂÀàËÆµÄͼ£º

Äã»á·¢ÏÖÕâÐ©Í¼ËæÎÒÃÇËùÓеÄʾÀýÌṩ¡£Èç¹ûÄãϲ»¶Ê¹ÓÃÒ»ÖÖ¿ÉÊÓ»¯µÄ½Ç¶ÈÈ¥¿´Í¼µÄ»°£¬Õâ¾Í°ïÖúÄã¿ìËÙÀí½â¸÷¸öÀý×ÓÖеÄ×é¼þ¡£¿ÉÒÔ¿´Ò»ÏÂÿ¸öÀý×ӵĶ¥¼¶Ä¿Â¼µÄÄÇЩ".png"
Îļþ¡£
²½Öè4£º²¿ÊðÓ¦ÓãºÖ»Òª"Calculator.composite"ÎļþºÍÆäËûµÄtuscany
jar°üÒ»Æð,´æÔÚÓÚclasspathÄÚ£¬ÎÒÃǾͿÉÒÔÏñ֮ǰ×öµÄÄÇÑùÔËÐÐÎÒÃǵÄÀý×Ó¡£ÕâЩÀý×Ó°üº¬Ò»¸öAnt²¿ÊðÎļþbuild.xml£¬ËùÒÔ£¬Èç¹ûÄãÏë²âÊÔÀý×Ó´úÂëµÄ»°£¬Äã¿ÉÒÔÈç´Ë×ö²¢ÖرàÒëËü¡£
ÖØÐ±àÒëÒÔºó£¬Äã¿ÉÒÔÏñÔÚ¡°ÔËÐÐʾÀý¡±Õ½ÚÄÇÑùÔËÐÐËü£¬ÎÒÃÇ»¹ÔÚAntµÄbuild.xml½Å±¾ÀïÃæÌṩÁËÒ»¸örun
targetÒÔ¹©ÔËÐУ¬Äã¿ÉÒÔÕâÑù£º
ÔÚcalculatorÄÚʹÓøü¶à¸ß¼¶ÌØÐÔ
»Ø¹ËÒÔÏ£¬ÎÒÃDZàдµÄÆô¶¯calculatorÓ¦ÓõĴúÂ룬ʹÓõÄTuscany SCAÔËÐÐʱ²»±ÈʹÓÃÆÕͨjava´úÂë¸ü³¤£¬È»¶ø£¬ÎÒÃÇÏÖÔÚȷʵÓÐÒ»¸öXML¼¯³ÉÅäÖÃÎļþ£¬ÃèÊöÎÒÃǵÄÓ¦ÓÃÈçºÎ±»×é×°¡£
µ«ÎÒÃǵÄÓ¦ÓñäµÃ¸ü¸´ÔÓ£¬²¢ÇÒÎÒÃÇÏëÒª¸Ä±äËü£¬ÖØÓÃËü£¬ºÍÆäËûÓ¦Óü¯³É»òÕßʹÓÃÒ»¸öºÍÎÒÃÇÆäËûSCAÓ¦ÓÃÒ»Öµıà³ÌÄ£ÐͽøÒ»²½¿ª·¢ËüµÄʱºò£¬¼¯³ÉµÄ¸ÅÄî¾ÍÊÇÒ»¸öºÜ´óµÄÓÅÊÆ¡£¶ø²»¹ÜËüÃÇÊÇÓÃ˵Ã÷ÓïÑÔʵÏֵġ£
¾Ù¸öÀý×Ó£¬ÎÒÃÇÈÏΪÎÒÃǵļÆËãÆ÷ʾÀý×㹻ǿ´óºÍÒ×Óã¬ÎÒÃÇ´òË㽫Ëü·ÅÔÚ¹«Ë¾ÄÚ²¿Íø£¬ÒÔ¹©ÆäËûÈËʹÓÃËûÃÇ»ùÓÚWeb2.0µÄ³ÌÐò£¬Í¨¹ýä¯ÀÀÆ÷½øÐÐÖ±½Ó·ÃÎÊ£¬Õâ¸öʱºòÎÒÃÇͨ³£»áÕÒÊé±¾ÒÔŬÁ¦Ñ°ÕÒʵÏÖËüµÄ°ì·¨£¬ÒòΪÎÒÃÇÓÐÒ»¸öÃèÊöÎÒÃÇÓ¦ÓõÄXMLÎļþ£¬ÕâÔÚTuscanyºÜÈÝÒס£ÈçÏÂÄÚÈÝÓ¦¸Ã´ïµ½Ä¿µÄ¡£
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="Calculator">
<service name="CalculatorService"
promote="CalculatorServiceComponent/CalculatorService">
<interface.java interface="calculator.CalculatorService"/>
<binding.jsonrpc/>
</service>
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
<reference name="addService" target="AddServiceComponent"
/>
<!-- references to SubtractComponent, MultiplyComponent
and DivideComponent -->
</component>
<component name="AddServiceComponent">
<implementation.java class="calculator.AddServiceImpl"/>
</component>
<!-- definitions of SubtractComponent, MultiplyComponent
and DivideComponent -->
</composite> |
ÎÒÃÇËù×öµÄ¾ÍÊÇÔö¼Ó<service>ÔªËØ£¬¸æËßTuscany SCAÈçºÎ±©Â¶CalculatorServiceComponent×÷Ϊһ¸öJSONRPC·þÎñ¡£×¢Ò⣬ÎÒÃDz»ÐèÒª¸ü¸ÄÎÒÃÇ×é¼þµÄJava´úÂë¡£ÕâÖ»ÊÇÅäÖÃÉϵÄÒ»¸ö¸Ä±ä¡£
helloworld-jsonrpc ʾÀýչʾÁËÒ»¸öjsonrpc°ó¶¨µÄ¹¤×÷Àý×Ó¡£
Èç¹ûÎÒÃÇÐèÒªÒ»¸ö»ùÓÚSOAP/HTTP µÄWebServiceÒ²ºÜÈÝÒ×£¬helloworld-ws-service
ºÍhelloworld-ws-reference Á½¸öÀý×ÓչʾÁËÈçºÎʹÓÃWebservice¡£
SCAÔÊÐíÆäËû·½Ê½µÄÁé»îÐÔ¡£ÎÒÃÇ¿ÉÒÔÖØÐÂÁ¬½ÓÎÒÃǵÄ×é¼þ£¬ÀýÈ磬ʹÓÃÆäÖÐÒ»¸öÔ¶³¬°ó¶¨£¬±ÈÈçRMI£¬ÎÒÃÇ¿ÉÒÔÈÃÔËÐÐÔÚһ̨»úÆ÷ÉϵÄCalculatorServiceComponeÁ¬½Óµ½Áíһ̨»úÆ÷ÉÏÔËÐеÄÔ¶¶Ë°æ±¾Ó¦Óã¬calculator-rmi-service
ºÍ calculator-rmi-reference չʾÁËÈçºÎʹÓÃRMI°ó¶¨µÄ·½·¨¡£
ÎÒÃÇÒ²ÄÜÒý½øÓò»Í¬µÄÓïÑÔʵÏÖµÄ×é¼þ£¬ÀýÈ磬ÈÃÎÒÃÇÔö¼ÓRubyʵÏÖµÄSubtractServiceComponent×é¼þ¡£
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="Calculator">
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
<reference name="addService" target="AddServiceComponent"
/>
<reference name="subtractService"
target="SubtractServiceComponent" />
<!-- references to MultiplyComponent and DivideComponent
-->
</component>
<component name="AddServiceComponent">
<implementation.java class="calculator.AddServiceImpl"/>
</component>
<component name="SubtractServiceComponent">
<implementation.script script="calculator/SubtractServiceImpl.rb"/>
</component>
<!-- definitions of MultiplyComponent and
DivideComponent -->
</composite> |
µ±È»£¬ÎÒÃÇÐèÒªRuby´úÂëȥʵÏÖËü£º
def subtract(n1, n2) return n1 - n2 end |
Tuscany SCAÔËÐÐʱ´¦ÀíÁËJava×é¼þÁ¬½Óµ½Ruby×é¼þµÄÎÊÌ⣬²¢ÇÒ½øÐÐÁ˱ØÒªµÄÊý¾Ýת»»£¬calculator-script
ʾÀýչʾÁ˲»Í¬ÓïÑÔµÄʹÓá£
ÄÇô£¬¼ÈÈ»ÎÒÃǵÄÓ¦ÓóÌÐòÒѾ×÷ΪSCA×°Å䣬ÄÇô½«À´µ±ÎÒÃǽøÒ»²½¿ª·¢ËüµÄʱºò¾Í´æÔÚÐí¶àµÄ¿ÉÄÜÐÔ£¬²¢ÇÒºÍÆäËûÓ¦Óü¯³É£¬½ÓÏÂÀ´µÄÕ½ڻáÌṩ¸ü¶àTuscany
SCAµÄϸ½Ú¡£
´´½¨Ò»¸öÔÚÏßÉ̵꣨OnLineStore£©SCA¼¯³ÉÓ¦ÓÃ
¼ÈÈ»ÄãÒѾÊìϤÁËSCAµÄ¸ÅÄÄã¿ÉÒÔÀûÓñ¾½Ì³ÌÈ¥´´½¨Ò»¸öOnLineStore¼¯³ÉSCAÓ¦Ó㬸ø¹ºÎï³µÌṩWeb½Ó¿Ú¡£Õâ¸öÁ·Ï°»á»¨·ÑÉÙÓÚ°ëСʱµÄʱ¼ä£¬ËüʹÄãÊìϤ´´½¨Ò»¸öÕæÕýµÄSCA¼¯³ÉÓ¦ÓõIJ½Öè¡£ËäÈ»ÕâÀïʹÓÃÁËEclipse×÷ΪIDE£¬µ«²¢²»ÒªÇóÄã¾ß±¸EclipseµÄÏà¹ØÖªÊ¶¡£Äã¿ÉÒÔºÜÈÝÒ׿´µ½ÔÚÄãϰ¹ßµÄIDEÀï¾ßÓÐÏàËÆµÄ²½Öè¡£
Tuscany SCAÓòµÄʵÏÖ
Äã¿ÉÄÜÒѾ´ÓÒÔǰÀý×ÓµÄͨÀÀ¿´µ½£¬SCA¸ÅÊöÒ²ÓÐÌáµ½£¬SCAÓиö¸ÅÄî½Ð×öDomain£¨Óò£©¡£SCA¼¯³É¹æ·¶µÄµÚ10²¿·Ö°ÑSCA
DomainÃèÊöΪ¡°SCA»úÖÆµÄÊӽ硱¡£SCAÏß·¿ÉÓÃÀ´ÔÚµ¥¸öSCA DomainÀï°Ñ×é¼þÁ¬½ÓÆðÀ´¡£
ͨ¹ýÒÔǰÄǸö¼ÆËãÆ÷Àý×Ó¿ÉÒÔ¿´µ½£¬ÔÚ×é¼þÒýÓúͷþÎñÖ®¼äµÄÁ¬Ïߣ¬ÊÇͨ¹ýÌí¼ÓÒ»¸öÄ¿±ê×é¼þÃûµ½Ò»¸öÒýÓã¬ÔÚÒ»¸öSCA
DomainÀï´¦ÀíµÄ¡£
<component name="CalculatorServiceComponent"> <implementation.java class="calculator.CalculatorServiceImpl"/> <reference name="addService" target="AddServiceComponent" /> <reference name="subtractService" target="SubtractServiceComponent" /> <reference name="multiplyService" target="MultiplyServiceComponent" /> <reference name="divideService" target="DivideServiceComponent" /> </component>
<component name="AddServiceComponent">
<implementation.java class="calculator.AddServiceImpl"/>
</component> |
ΪÁËÁ¬½ÓÒ»¸öSCA DomainÖ®ÍâµÄ·þÎñ£¨²»¹ÜËüÃÇÊÇÒÔSCAÌṩµÄ·þÎñ»¹ÊÇÆäËû·½Ê½£©£¬ÄãÅäÖÃÒ»¸öÃ÷È·µÄ°ó¶¨£¬ÀýÈ磬¼ÓÈëAddServiceComponentÊÇÍøÂçÉÏij´¦µÄ·ÇSCAµÄWeb·þÎñ£¬ÒòΪËüÔÚSCA
DomainÖ®Í⣬ÎÒÃÇ¿ÉÒÔʹÓÃÒ»¸öÍⲿ°ó¶¨È¥ºÍËüÁªÏµ¡£
<component name="CalculatorServiceComponent"> <implementation.java class="calculator.CalculatorServiceImpl"/> <reference name="addService" > <interface.java interface="calculator.AddService" /> <binding.ws uri="http://localhost:8080/sample-calculator-ws-webapp/AddServiceComponent"/> </reference> <reference name="subtractService" target="SubtractServiceComponent"></reference> <reference name="multiplyService" target="MultiplyServiceComponent"></reference> <reference name="divideService" target="DivideServiceComponent"></reference> </component> |
Tuscany SCAÖ§³ÖÔÚµ¥JVM»òÀ©Õ¹ÖÁ¶àJVMÀ´ÔËÐÐÒ»¸öSCA Domain£¬ÕâЩJVM¿ÉÄÜÔÚ²»Í¬µÄ»úÆ÷ÉÏ¡£

Tuscany²»Ìṩµ¥¸öDomain»ò½ÚµãµÄJava³ÌÐò¡£Èç¹ûÄã¿´µ½ÁËTuscanyÌṩµÄÄÇЩÀý×ÓÄã»á·¢ÏÖËüÃÇʹÓø÷ÖÖ²»Í¬µÄ·½Ê½Ê¹ÓÃSCA
Domain½Ó¿Ú£¬µã»÷Á´½Ó²é¿´Ê¹ÓöÀÁ¢µÄSCA DomainºÍ·Ö²¼Ê½SCA Domain½Ó¿Ú¡£
Tuscany SCAÀ©Õ¹
¿ÉÀ©Õ¹µÄÔËÐÐʱ
Tuscany SCAÔËÐÐʱ°üÀ¨Ò»Ð¡×éºËÐÄÈí¼þÀ´´¦Àí£º
¹ÜÀíTuscany SCAÔËÐÐʱµÄÀ©Õ¹£¨ºËÐÄ£©
¹¹½¨²¢ÇÒÔÚÄÚ´æÖм¯³ÉSCAÓ¦ÓÃÄ£ÐÍ£¨¼¯³É£©
´¦Àí²¿ÊðµÄSCAÓ¦Ó㨲¿Êð£©
Ö§³ÖÊý¾Ý°ó¶¨£¨Êý¾Ý°ó¶¨£©
Ö§³ÖTuscany SCA£¬ÒÔÔÚ±»Ç¶ÈëÆäËû»·¾³Ê±Ìṩ·þÎñ£¨Ç¶È룩
Ö§³ÖTuscany SCA£¬µ±ÔËÐÐÔÚÒ»¸öServletÈÝÆ÷ÖÐʱ£¨HTTP£©
ÃèÊöÕâÐ©ÌØÕ÷µÄ½Ó¿ÚµÄ¼¯ºÏ±»³ÆÎªÏµÍ³±à³Ì½Ó¿Ú(SPI)¡£ ¿ª·¢ÕßÖ¸ÄÏ»á´Ó¸üϸ½ÚÀ´ÌÖÂÛËüÃÇ£¬µ«´ÓÓû§µÄÊÓ½ÇÖØÒªµÄÊÂÇéÊÇÒâʶµ½£¬Tuscay
SCAÖдó¶àÊýÓÐȤµÄ¹¦ÄÜ£¬ÊÇ»ùÓÚºËÐÄSPIÖ®ÉÏ¿ª·¢µÄÀ©Õ¹ËùÌṩµÄ¡£ÕâЩÀ©Õ¹ÎªTuscany SCAÌṩÁËÖ§³ÖºÜ¶à²»Í¬ÌØÐÔµÄÄÜÁ¦¡£
ʵÏÖÀàÐÍ
°ó¶¨ÀàÐÍ
Êý¾Ý°ó¶¨ÀàÐÍ
½Ó¿ÚÃèÊö·ç¸ñ
ËÞÖ÷»·¾³
Òò´Ë£¬ÒªÀí½âÔõÑùȥʹÓÃTuscay SCAÔËÐÐʱ¾ÍÊÇÈ¥Àí½âÔõÑùʹÓÃËüµÄÄÇЩÀ©Õ¹¡£
¿ÉÓõÄÀ©Õ¹
ÍùÍù²»ÄÜÓÃÑÓÉìÉæ¼°¼ÓÈë×ÊÁϵ½scdlÎļþ»òÖ´ÐÐÎļþ£¬µ«ÕâÖÖÇé¿ö²¢·Ç×ÜÊÇÈç´Ë¡£ÏÂÃæµÄÁ´½ÓÃèÊöµÄÿһÏîÀ©Õ¹£¬ÒÔ¼°ËûÃÇÈçºÎÀûÓúÍÅäÖá£

ʹÓÃÀ©Õ¹
Tuscany SCAʹÓÃJava·þÎñ×°ÔØ»úÖÆ¼ÓÔØÀ©Õ¹²å¼þ£¬Ã¿¸ö²å¼þ±»´ò°ü³ÉÒ»¸öjar°ü£¬ÒÔÎļþµÄÐÎʽÌṩ¡£
META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
Tuscany SCAÔËÐÐʱ»á¼ÓÔØJava ClasspathÖдæÔÚµÄËùÓÐÀ©Õ¹£¬ËùÒÔÈç¹ûÄã´òËãʹÓÃÒ»¸öÌØ±ðµÄÌØÐÔҪȷÈÏËüÔÚclasspathÖдæÔÚ²¢¿ÉÓ㬷´Ö®Èç¹ûÄã²»ÐèÒªµÄ»°¿ÉÒÔ°ÑËü´ÓclasspathÖÐÄõô¡£
дһ¸öÐÂÀ©Õ¹ÊÇÒ»¸öÖ÷Ìâ²¢ÇÒ±»ÔÚÀ©Õ¹Ö¸ÄÏÀïÃèÊö¡£
ÔËÐл·¾³
Apache Tuscany SCA Java ÔÚÒÔÏÂÖ÷»ú»·¾³ÖÐÔËÐУº

TuscanyºÍIDE
ʹÓÃIDE´ò¿ªÀý×Ó¶ø²»ÊÇMaven
ÎÒÃDz»Ëæ·Ö·¢°üÌṩÈκÎIDEÎļþ£¬Òò´ËÄãÐèÒªÊÖ¹¤µ¼ÈëÄÇЩÀý×Ó£¬ÕâÀïÊǸöÈçºÎÔÚEclipseÀïµ¼ÈëµÄÀý×Ó£¬tuscany_sca_install_dir
Ŀ¼ÊÇTuscany SCA¶þ½øÖÆ·Ö·¢°ü½âѹºóµÄÎļþ¼Ð£¬ÀýÈ磬¶ÔÓÚ0.90°æ±¾µÄĿ¼½«»áÊÇtuscany-sca-0.90-incubating¡£
ÔÚÒ»¸öеĻòÕßÒÑÓеŤ×÷¿Õ¼ä£º
´´½¨Ò»¸öй¤³Ì£º
my working dir/calculator |
µ¼ÈëʾÀý´úÂëºÍ×ÊÔ´µ½¹¤³Ì£º
´Ó²Ëµ¥File-ImportÃüÁѡÔñtuscany_sca_install_dir/samples/calculator
Ŀ¼
ÉèÖÃÔ´´úÂë·¾¶°üº¬£º
tuscany_sca_install_dir/samples/calculator/src/main/java tuscany_sca_install_dir/samples/calculator/src/main/resources |
ÅäÖÃÊä³ö·¾¶£º
tuscany_sca_install_dir/samples/calculator/target |
ÅäÖÿâĿ¼£º
tuscany_sca_install_dir/lib |
Èç¹ûÄãÑ¡Ôñcalculator.CalculatorClient.java £¬²¢ÇÒʹÓá°Java Application¡±ÔËÐÐËü£¬Ä㽫»á¿´µ½ÈçϽá¹û£º
3 + 2=5.0 3 - 2=1.0 3 * 2=6.0 3 / 2=1.5 |
¶ÔÓÚÆäËû¿ª·¢»·¾³Óë´Ë´óͬСÒì¡£
|