1. new maven project.
2. copy pom.xml
3. add Library -> user Lib -> Tuscany1-6-2
4. 项目右键 -> SCA -> Add SCA Nature
5. new SCA -> SCA.composite -> test_app.composite (生成到resources中)
6. test_app.composite:
<?xml...>
<sca:composite xmlns...>
<sca:component name="DeSkuCategoryComponent">
<sca:implementation.java class="com.dragonmarts.test.impl.DeSkuCategoryService" />
<sca:service name="DeSkuCategoryService" >
<sca:interface.java interface="com.dragonmarts.test.service.DeSkuCategoryService" />
<sca:binding.sca /> <!-- java 内部调用-->
<sca:binding.ws /> <!-- wsdl, soap 服务 -->
</sca:service>
</sca:component>
</sca:composite>
右键点击空白处 -> SCA -> 生成代码
7. copy serializable_data_type_object.xml
到resources中
8. # cd src/java/main
# wsimport -extension -b ../resources/serializable_data_type_object.xml -d . http://yourhost:9763/services/InventoryDataServices?wsdl -p com.dragonmarts.test.das -s .
wsimport -extension -b ../resources/serializable_data_type_object.xml -d . http://172.16.5.83:9763/services/CetsDataService?wsdl -p com.dragonmarts.cets.das -s .
wsimport -extension -b ../resources/serializable_data_type_object.xml -d . http://172.16.5.83:9763/services/InventoryDataService?wsdl -p com.dragonmarts.inventory.das -s .
-extension: 是为了处理没有参数的函数。如果不设,那么当有两个以上时会提示:提供参数不唯一。
9. test_app.composite:
<?xml...>
<sca:composite xmlns... targetNamespace="http://dragonmarts.com">
<sca:component name="DeSkuCategoryComponent">
<sca:implementation.java class="com.dragonmarts.test.impl.DeSkuCategoryServiceImpl" />
<sca:service name="DeSkuCategoryService" >
<sca:interface.java interface="com.dragonmarts.test.service.DeSkuCategoryService" />
<sca:binding.sca /> <!-- java 内部调用-->
<sca:binding.ws /> <!-- wsdl, soap 服务 -->
</sca:service>
<sca:reference name="testDataService">
<sca:interface.java interface="com.dragonmarts.test.das.TextDataServicePortType" />
<sca:binding.ws uri="http://127.0.0.1:....wso2server...?wsdl" />
</sca:reference>
</sca:component>
</sca:composite>
10. 到 com.dragonmarts.test.impl.DeSkuCategoryServiceImpl 中增加
public class ...{
protected TextDataServicePortType textDataService;
public void setTextDataService(TextDataServicePortType textDataService){
....
}
...
}
11. create class : com.dragonmarts.test.model.Pagination
各个项目是一样的, 需要序列化
12. create class : com.dragonmarts.test.model.DeSkuCategoryResponse:
public class ... implements Searializable {
private Pagination;
private List<DeSkuCategory> deSkuCategory;
... get, set...
}
13. com.dragonmarts.test.service.DeSkuCategoryService
public interface ...{
public DeSkuCategoryResponse getDeSkuCategoryResponseBySkuIdList(
String skuIdList);
}
14. 到 com.dragonmarts.test.impl.DeSkuCategoryServiceImpl
增加 getDeSkuCategoryResponseBySkuIdList 的实现:
public class ...{
static Logger dataServiceLogger = Logger.getLogger("testDas");
static Logger appLogger = Logger.getLogger("testApp");
...
public DeSkuCategoryResponse getDeSkuCategoryBySkuIdList(String skuIdList){
DeSkuCategoryReponse deSkuCategoryReponse = new DeSkuCategoryReponse();
...
List<DeSkuCategory> deSkuCategoryList = new ArrayList<DeSkuCategory>();
try{...}catch(...){...}
Pagination pagination = new Pagination();
...
deSkuCategoryReponse.setPagination(pagination);
...
return deSkuCategoryReponse
}
}
(隐含: 将log4j.properties放在resources文件夹下)
15. 部署
webapp目录下的结构:
META-INF
MANIFEST.MF
sca-contribution.xml
WEB-INF
web.xml
# mvn tomcat:deploy
(第二次开始,就可以直接使用 重新部署: mvn tomcat:redeploy, 这样更快)
sca-contribution.xml
中的名字要与 test.composite中相关信息相同
页面可以访问: http://127.0.0.1:8080/test_app/DeSkuCategoryComponent?wsdl
16. php 中调用
17.提交das
cd /usr/local/wso2dataservices/repository/deployment/server/dataservices
cp CetsDataService.dbs /export/wso2/cets_das/
2. copy pom.xml
3. add Library -> user Lib -> Tuscany1-6-2
4. 项目右键 -> SCA -> Add SCA Nature
5. new SCA -> SCA.composite -> test_app.composite (生成到resources中)
6. test_app.composite:
<?xml...>
<sca:composite xmlns...>
<sca:component name="DeSkuCategoryComponent">
<sca:implementation.java class="com.dragonmarts.test.impl.DeSkuCategoryService" />
<sca:service name="DeSkuCategoryService" >
<sca:interface.java interface="com.dragonmarts.test.service.DeSkuCategoryService" />
<sca:binding.sca /> <!-- java 内部调用-->
<sca:binding.ws /> <!-- wsdl, soap 服务 -->
</sca:service>
</sca:component>
</sca:composite>
右键点击空白处 -> SCA -> 生成代码
7. copy serializable_data_type_object.xml
到resources中
8. # cd src/java/main
# wsimport -extension -b ../resources/serializable_data_type_object.xml -d . http://yourhost:9763/services/InventoryDataServices?wsdl -p com.dragonmarts.test.das -s .
wsimport -extension -b ../resources/serializable_data_type_object.xml -d . http://172.16.5.83:9763/services/CetsDataService?wsdl -p com.dragonmarts.cets.das -s .
wsimport -extension -b ../resources/serializable_data_type_object.xml -d . http://172.16.5.83:9763/services/InventoryDataService?wsdl -p com.dragonmarts.inventory.das -s .
-extension: 是为了处理没有参数的函数。如果不设,那么当有两个以上时会提示:提供参数不唯一。
9. test_app.composite:
<?xml...>
<sca:composite xmlns... targetNamespace="http://dragonmarts.com">
<sca:component name="DeSkuCategoryComponent">
<sca:implementation.java class="com.dragonmarts.test.impl.DeSkuCategoryServiceImpl" />
<sca:service name="DeSkuCategoryService" >
<sca:interface.java interface="com.dragonmarts.test.service.DeSkuCategoryService" />
<sca:binding.sca /> <!-- java 内部调用-->
<sca:binding.ws /> <!-- wsdl, soap 服务 -->
</sca:service>
<sca:reference name="testDataService">
<sca:interface.java interface="com.dragonmarts.test.das.TextDataServicePortType" />
<sca:binding.ws uri="http://127.0.0.1:....wso2server...?wsdl" />
</sca:reference>
</sca:component>
</sca:composite>
10. 到 com.dragonmarts.test.impl.DeSkuCategoryServiceImpl 中增加
public class ...{
protected TextDataServicePortType textDataService;
public void setTextDataService(TextDataServicePortType textDataService){
....
}
...
}
11. create class : com.dragonmarts.test.model.Pagination
各个项目是一样的, 需要序列化
12. create class : com.dragonmarts.test.model.DeSkuCategoryResponse:
public class ... implements Searializable {
private Pagination;
private List<DeSkuCategory> deSkuCategory;
... get, set...
}
13. com.dragonmarts.test.service.DeSkuCategoryService
public interface ...{
public DeSkuCategoryResponse getDeSkuCategoryResponseBySkuIdList(
String skuIdList);
}
14. 到 com.dragonmarts.test.impl.DeSkuCategoryServiceImpl
增加 getDeSkuCategoryResponseBySkuIdList 的实现:
public class ...{
static Logger dataServiceLogger = Logger.getLogger("testDas");
static Logger appLogger = Logger.getLogger("testApp");
...
public DeSkuCategoryResponse getDeSkuCategoryBySkuIdList(String skuIdList){
DeSkuCategoryReponse deSkuCategoryReponse = new DeSkuCategoryReponse();
...
List<DeSkuCategory> deSkuCategoryList = new ArrayList<DeSkuCategory>();
try{...}catch(...){...}
Pagination pagination = new Pagination();
...
deSkuCategoryReponse.setPagination(pagination);
...
return deSkuCategoryReponse
}
}
(隐含: 将log4j.properties放在resources文件夹下)
15. 部署
webapp目录下的结构:
META-INF
MANIFEST.MF
sca-contribution.xml
WEB-INF
web.xml
# mvn tomcat:deploy
(第二次开始,就可以直接使用 重新部署: mvn tomcat:redeploy, 这样更快)
sca-contribution.xml
中的名字要与 test.composite中相关信息相同
页面可以访问: http://127.0.0.1:8080/test_app/DeSkuCategoryComponent?wsdl
16. php 中调用
17.提交das
cd /usr/local/wso2dataservices/repository/deployment/server/dataservices
cp CetsDataService.dbs /export/wso2/cets_das/