Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Apache Tuscany SCA Óû§Ö¸ÄÏ
 
×÷Õߣº-ÓùÖÛ- À´Ô´£ºCSDN ·¢²¼ÓÚ 2015-9-23
  3160  次浏览      27
 

½éÉÜ

ÕâÆªÓû§Ö¸ÄϰïÖúÄãÊìϤ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 compile

ÖØÐ±àÒëÒÔºó£¬Äã¿ÉÒÔÏñÔÚ¡°ÔËÐÐʾÀý¡±Õ½ÚÄÇÑùÔËÐÐËü£¬ÎÒÃÇ»¹ÔÚAntµÄbuild.xml½Å±¾ÀïÃæÌṩÁËÒ»¸örun targetÒÔ¹©ÔËÐУ¬Äã¿ÉÒÔÕâÑù£º

ant run

ÔÚ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

¶ÔÓÚÆäËû¿ª·¢»·¾³Óë´Ë´óͬСÒì¡£


   
3160 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

¶àά·½·¨À´¿ª·¢ÓлúµÄÒµÎñÁ÷³Ì¼Ü¹¹
SCA Ó¦ÓóÌÐò¿ª·¢
BPM ºÍ SOA ÐÔÄÜ×î¼Ñʵ¼ù
ʵÏÖÆóÒµ·þÎñ×ÜÏßģʽ
Ïà¹ØÎĵµ

SCA½éÉܼ°Ó¦ÓÃʵÀý
»ùÓÚSOA¼Ü¹¹µÄESBƽ̨£ºInfomagic
SCA¼Ü¹¹
SOAµÄ»ù±¾¸ÅÄî
Ïà¹Ø¿Î³Ì

ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

»ùÓÚSOAµÄ¹¤×÷Á÷£¨WF£©ÕûºÏ
SOA 100ÎÊ - ÎÊÓë´ð
SOAP Ó¦ÓÃģʽ:´¦ÀíÓëÐÔÄÜ
ESB¼Ü¹¹Ö®Æóҵʵʩ°¸Àý
»ùÓÚSOA¼Ü¹¹µÄÆóÒµ¼¯³Éϵͳ
»ùÓÚSOAµÄÌåϵ¼Ü¹¹Éè¼Æ


ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
SOAÌåϵ½á¹¹Êµ¼ù


ijµÚÈý·½µç×ÓÖ§¸¶ÆóÒµ SOA¼Ü¹¹Éè¼Æ
ijµç×ÓÆóÒµ SOAÓ¦ÓÃ
ÖйúÒÆ¶¯ SOAÅàѵ
±±¾©´óѧ SOA¼Ü¹¹Éè¼ÆÊµ¼ù
ÓѰÏÕ SOA¼Ü¹¹Éè¼Æ
ÉϺ£ SOA¼Ü¹¹Êµ¼ù
ɽ¶«Òƶ¯Í¨ÐÅ SOAÌåϵ½á¹¹Êµ¼ù