- 浏览: 546338 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (251)
- UML/RUP/软件工程 (0)
- DDD:领域驱动设计 (1)
- IaaS/Paas/SaaS (1)
- Hadoop/YARN (10)
- PBDP项目 (2)
- OSGi-基础 (7)
- OSGi-Aries (2)
- OSGi-SpringDM (32)
- Oracle/MySQL/SS (8)
- Felix/Equinox/Bnd (14)
- Virgo Server/Gemini (7)
- Weblogic/JBoss/Tomcat (10)
- ActiveMQ (14)
- Camel (1)
- Spring Roo/Eclipse (7)
- Java/JSP/JSF (10)
- Maven (19)
- ESB-Mule (1)
- ESB-ServiceMix (18)
- SOA/SCA/SDO (12)
- WebService/RESTful (17)
- JS/jQuery/ExtJS (4)
- Spring/JPA/MVC (15)
- SpringSecurity (5)
- BPM/jBPM (3)
- Hudson/SVN/CI (0)
- LinuxOS/虚拟化 (25)
- Office/OpenOffice (1)
- 项目管理 (5)
- POI/jFreeChart (1)
最新评论
-
panamera:
请问JMS Transport 发布的webservice 是 ...
CXF 提供的Service Transport-JMS Transpor -
jianyi296:
where is attachment.
CXF WebService Dynamic Client -
hj01kkk:
您好,我用jdbc-user-service为什么每次验证时都 ...
SpringSecurity笔记3-Authenticating Users:Authenticaton Strategy -
wufenglin1231:
你好,我在实现Mapping exceptions to re ...
RESTful 异常处理 -
xchd:
[echo] Project: common
[echo ...
Hive安装配置学习笔记
1. Component, service, reference and property naming conventions
SCA规范名没有定义它们的命名规范,下面只是推荐的命名格式:
(1) Component,Service以大写字母开头,驼峰式命名;
(2) Reference,property默认以小写字母开头。
2. 组合定义文件
组合是被用来定义服务、组件和引用的容器。
它被用来将SCA制品装配成逻辑分组的组件。SCA 组合可粗略的认
为是和Spring中通常被称作应用程序上下文(application context)的XMl文件类似的东西,而component元
素,则和Spring配置文件中定义的bean元素在功能上类似。
SCA组合装配XML示例,problemMgmt.composite.xml:
<?xml version="1.0" encoding="ISO-8859-15"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:hw="http://opensoa.book.chapter3" name="ProblemManagementComposite"
targetNamespace="http://opensoa.book.chapter3">
<service name="ProblemTicketComponent" promote="ProblemTicketComponent">
<binding.ws uri="http://localhost:8085/ProblemTicketService"/>
</service>
<component name="ProblemTicketComponent">
<implementation.java class="opensoa.book.chapter3.impl.ProblemTicketComponentImpl"/>
<reference name="createTicket" target="CreateTicketComponent"/>
</component>
<component name="CreateTicketComponent">
<implementation.java class="opensoa.book.chapter3.impl.CreateTicketComponentImpl"/>
</component>
</composite>
启动该装配集的方式:
SCADomain scaDomain = SCADomain.newInstance("problemMgmt.composite");
3. 配置组件
组件指的是通过代码表达的业务功能,是应用程序构建的单元;组件既可以提供服务,也可以使用服务。
ProblemTicketComponentImpl的Java实现:
@Service(ProblemTicketComponent.class)
public class ProblemTicketComponentImpl implements ProblemTicketComponent {
private CreateTicketComponent createTicket;
public int createTicket(TicketDO ticket) {
System.out.println(ticket.toString());
return createTicket.create(ticket);
}
@Reference
public void setCreateTicket( CreateTicketComponent createTicket) {
this.createTicket = createTicket;
}
}
@Remotable
public interface ProblemTicketComponent {
public int createTicket(TicketDO ticket);
}
public class CreateTicketComponentImpl implements CreateTicketComponent {
public int create(TicketDO ticket) {
Random r = new Random();
return r.nextInt(300000);
}
}
4. 定义服务
通过接口类定义的方法签名或interface.wsdl来规定哪些操作被允许,这种做法在容器级别会得到强制保障,是
安全的;而简单的创建 一个自定义的、只包含哪些你想暴露的操作的WSDL的做法,是不安全的,因为知道源码
的人还是可以调用哪些没有被显示暴露出来的操作。
<service name="ProblemTicketComponent" promote="ProblemTicketComponent">
<interface.java
interface="opensoa.book.chapter3_23.ProblemTicketComponent" />
<binding.ws uri="http://localhost:8085/ProblemTicketService" />
</service>
5. 使用属性
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://opensoa.book.chapter3"
xmlns:hw="http://opensoa.book.chapter3"
name="ProblemManagementComposite">
<!-- VARIANT 1
<property name="username">jdoe@mycompany.com</property>
<property name="password">mypassword1</property>
-->
<!-- VARIANT 2 -->
<property name="credentials" type="hw:CredentialsType">
<Credentials>
<username>jdoe@mycompany.com</username>
<password>mypassword1</password>
</Credentials>
</property>
<service name="ProblemTicketComponent" promote="ProblemTicketComponent">
<binding.ws uri="http://localhost:8085/ProblemTicketService" />
</service>
<component name="ProblemTicketComponent">
<implementation.java
class="opensoa.book.chapter3_24.impl.ProblemTicketComponentImpl" />
<!-- use w/VARIANT 1
<property name="username" source="$username" />
<property name="password" source="$password" />
-->
<!-- use w/VARIANT 2 -->
<property name="username" source="$credentials/*[local-name()='Credentials']/
*[local-name()='username']" />
<property name="password" source="$credentials/*[local-name()='Credentials']/
*[local-name()='password']" />
<reference name="createTicket" target="CreateTicketComponent" />
</component>
<component name="CreateTicketComponent">
<implementation.java
class="opensoa.book.chapter3_24.impl.CreateTicketComponentImpl" />
</component>
</composite>
@Service(ProblemTicketComponent.class)
public class ProblemTicketComponentImpl implements ProblemTicketComponent {
/*第一种使用方式*/
@Property
protected String username;
@Property
protected String password;
/* 另一种使用方式 */
protected String username;
@Property(name="username")
public void setMyUserName(String username){
this.username = username
}
private CreateTicketComponent createTicket;
public int createTicket(TicketDO ticket) {
System.out.println(ticket.toString());
/* username variable passed as injected property value */
System.out.println("username is: " + username);
return createTicket.create(ticket);
}
/* Note, instead of using a setter, you could inject the reference
* directly at the variable reference level, similar to what
* is done for the propery injections shown above.
*/
@Reference
public void setCreateTicket(CreateTicketComponent createTicket) {
this.createTicket = createTicket;
}
}
6. 实现选项
Apache Tuscany 的SCA实现类型:
Java组件,Spring程序集,脚本:JS,Groovy,Ruby,Pythin,XSLT,BPEL,XQuery,OSGi
实现组示例:
<?xml version="1.0" encoding="ISO-8859-15"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:hw="http://opensoa.book.chapter325"
name="IssueManagementComposite"
targetNamespace="http://opensoa.book.chapter325">
<service name="SystemErrorService" promote="SystemErrorComponent">
<binding.ws uri="http://localhost:8085/SystemErrorService"/>
</service>
<component name="SystemErrorComponent">
<implementation.java
class="opensoa.book.chapter3_25.impl.SystemErrorComponentImpl"/>
<reference name="problemTicket" target="ProblemTicket"/>
</component>
<component name="ProblemTicket">
<implementation.composite name="hw:ProblemManagementComposite"/>
</component>
</composite>
实现类:
@Service(SystemErrorComponent.class)
public class SystemErrorComponentImpl implements SystemErrorComponent {
@Reference
public ProblemTicketComponent problemTicket;
public int systemProblem(String system, String title,String problem) {
System.out.println("*** SystemErrorComponentImpl ***");
int rval = 0;
TicketDO ticket = new TicketDO();
ticket.setSubject(title);
ticket.setSubject(problem);
ticket.setSource(system);
rval = problemTicket.createTicket(ticket);
System.out.println("problemTicket:" + rval);
return rval;
}
}
7. 使用引用进行依赖注入
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://opensoa.book.chapter3"
xmlns:hw="http://opensoa.book.chapter3"
name="IssueManagementComposite">
<service name="SystemErrorService" promote="SystemErrorComponent">
<binding.ws uri="http://localhost:8085/SystemErrorService" />
</service>
<component name="SystemErrorComponent">
<implementation.java
class="opensoa.book.chapter3_26.impl.SystemErrorComponentImpl" />
</component>
<reference name="ProblemTicket" promote="SystemErrorComponent/problemTicket">
<binding.ws uri="http://localhost:8086/ProblemTicketService" />
</reference>
</composite>
@Reference
public void setProblemTicket(ProblemTicketComponent problemTicket) {
this.problemTicket = problemTicket;
}
8. 定义可用的绑定
Apache Tuscany的绑定类型:
WebService, JMs, JSON-RPC,EJB, Feed
将多个Web服务合并到单个WSDL文件中:
<composite
xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://opensoa.book.chapter327"
xmlns:hw="http://opensoa.book.chapter327"
name="IssueManagementComposite">
<service name="SystemErrorService" promote="SystemErrorComponent">
<binding.ws wsdlElement="http://chapter327.book.opensoa#wsdl.binding(
SystemErrorServiceJMSBinding)"
uri="jms:/SystemErrorInQueue?transport.jms
.ConnectionFactoryJNDIName=QueueConnectionFactory
&java.naming.factory.initial=org.apache.activemq
.jndi.ActiveMQInitialContextFactory&java.naming.provider.url
=tcp://localhost:61616?wireFormat.maxInactivityDuration=0" />
<binding.ws
wsdlElement="http://chapter327.book.opensoa#wsdl.port(SystemErrorService/SOAP)" />
<!--
<binding.ws uri="http://localhost:8085/SystemErrorService" />
-->
</service>
<component name="SystemErrorComponent">
<implementation.java
class="opensoa.book.chapter3_27.impl.SystemErrorComponentImpl" />
<reference name="problemTicket" target="ProblemTicket" /></component>
<component name="ProblemTicket">
<implementation.composite name="hw:ProblemManagementComposite" />
</component>
</composite>
SCA与远程协议(如:Web Service)之间的不同:
SCa定义可入如何将网络服务装配成可用的应用程序,并且提供了一种语言用于描述这种装配;而Web Service
描述了怎样使用协议去调用单个的服务。
发表评论
-
TuscanySCA5-理解SCA Domian
2011-12-18 13:36 1182SCA Domain: (1) 在SCA的运 ... -
TuscanySCA4-Single Process中运行Composite Application
2011-12-16 16:52 6821. 准备Contributions Contrib ... -
TuscanySCA3-使用SCA组件
2011-12-12 11:04 1357每个组件的的实现均提供了组件的业务逻辑,通过imple ... -
ESB核心功能及使用场合
2011-09-01 22:42 3213ESB是达到终点的手段,而不是终点本身。 1. ES ... -
服务数据对象SDO
2011-08-30 21:12 889SDO被设计为支持“离线”处理,对数据集的更改会自动被 ... -
SCA产品部署
2011-08-30 21:11 1164内嵌容器与Servlet容器:内嵌容器每个域都需要它自己的专用 ... -
SCA交互模型
2011-08-25 20:52 11851.使用对话 (1) 对话范围的不同级别 Co ... -
SCA组件类型配置
2011-08-25 20:52 1015使用该方式可以替换SCA中的Java注解方式。一般情况 ... -
TuncanySCA2-Tuncany SCA Java 运行环境
2011-08-23 20:59 1127Tuncany Project实现了 ... -
SOA术语-名词缩写
2011-08-23 13:23 13621. SOA:Servic-Oriented Architec ... -
TuscanySCA1-TuscanySCA开发环境设置
2011-06-26 10:23 1485基于Eclipse的SCA Tools是STP的一个子 ...
相关推荐
apache-tuscany-sca-1.6.zip
SCA装配模型规范中文版,是学习SOA、SCA的朋友必看的资料。
计算机-后端-基于SCA模型的应用集成架构研究.pdf
SCA装配模型规范(中文版),JAVA语言
商业级Fortify白盒审计神器,是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件...
apache-tuscany tuscany
SOA-SCA-Assemblymodel
uscany-sca-1.2-incubating-updatesite.zip Eclipse uscany-sca-1.2-incubating-updatesite.zip Eclipse
fortify-sca产品介绍
本指南详细介绍了fortify工具的详细使用过程,以及命令的使用说明
嵌入式LCD液晶显示屏技术手册,规格书SPEC,产品规格书。
变频器说明书大全系列-SCA-05.rar
Fortify SCA分析原理 Front-End 3rd party IDE Java Pug-In C/C++ MicrOsoL NET IBM.eclipse Audit workbench PLSQL XML Analysis Engine Semantic fdi/ fpr Gobal Data flow N Control Flow Configuration ...
语言:中文 (简体) Secure Cloud Access olym-ssl-sca插件用来在浏览器中标记当前页签,插入头部X-OLYM-APP-NAME值,做云安全接入。
SCA编程模型入门.doc,WebSphere Integration Developer,WebSphere Integration Developer,SCA编程模型入门,SCA编程模型入门,SCA编程模型入门
公共景观与规划-15-方案文本.长沙东塘项目景观设计文本-SCA.rar
NULL 博文链接:https://lwyingdao.iteye.com/blog/666036
stm32f103与sca100t通讯程序