summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/delete-tuscany-sca-databinding-faq.html
blob: 35209d395bd79a531d673487f153b3c2d08f99e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE- 2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <HEAD>
		<!-- generateKeywords macro -->
	    <META name="description" content="Apache Tuscany">
        <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture,  sca, service component architecture, das, sdo, csa, ruby, opensource">
		<!-- generateKeywords macro end -->
		
        <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css">
        <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">   
        <TITLE>Apache Tuscany : Delete - Tuscany SCA - DataBinding - FAQ</TITLE>
    <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
    
    <BODY onload="init()">
        <!-- topNav macro -->
		<TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg">
			<TR>
				<TD valing="top" align="left">
					<A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
				</TD>
				<TD>
					<A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A>
				</TD>
				
				<TD width="100%">
					&nbsp;
				</TD>

				<!-- Adds the edit page link to the top banner-->
				<TD valign="bottom">
					<DIV style="padding: 2px 10px; margin: 0px;">
						<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=43356">
						<IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
					</DIV>
				</TD>

			</TR>
		</TABLE>
        <!-- topNav macro end -->

		<!-- breadCrumbs macro -->
		<TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
			<TR class="topBar">
				<TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%">
					&nbsp;<A href="home.html" title="Apache Tuscany">Apache Tuscany</A>&nbsp;&gt;&nbsp;<A href="home.html" title="Home">Home</A>&nbsp;&gt;&nbsp;<A href="sca-overview.html" title="SCA Overview">SCA Overview</A>&nbsp;&gt;&nbsp;<A href="sca-java.html" title="SCA Java">SCA Java</A>&nbsp;&gt;&nbsp;<A href="tuscany-sca-java-faq.html" title="Tuscany SCA Java - FAQ">Tuscany SCA Java - FAQ</A>&nbsp;&gt;&nbsp;<A href="" title="Delete - Tuscany SCA - DataBinding - FAQ">Delete - Tuscany SCA - DataBinding - FAQ</A>
				</TD>
				
				<TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true">
				<A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>&nbsp;&nbsp;
				</TD>
			</TR>
		</TABLE>
		<!-- breadCrumbs macro end -->


        <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
            <TR>
                <TD align="left" valign="top">

					<!-- pageContent macro -->
					<DIV id="PageContent">
												
						<DIV class="pagecontent">
							<DIV class="wiki-content">
								<TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR><TD class="confluenceTd" valign="top" width="15%"><P></P>
<DIV class="panel" style="background-color: #ECF4D1;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>General</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
<P><A href="home.html" title="Home">Home</A><BR>
<A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License </A><BR>
<A href="tuscany-downloads-documentations.html" title="Tuscany Downloads & Documentations">Downloads</A><BR>
<A href="tuscany-downloads-documentations.html" title="Tuscany Downloads & Documentations">Documentation</A><BR>
<A href="tuscany-books-and-articles.html" title="Tuscany Books and Articles">Books and Articles</A><BR>
<A href="tuscany-dashboard.html" title="Tuscany Dashboard">Dashboard</A><BR>
<A href="issue-tracking.html" title="Issue Tracking">Found a Bug?</A><BR>
<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Sponsorship </A><BR>
<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks </A><BR>
<A href="privacy-policy.html" title="Privacy Policy">Privacy Policy</A></P>
</DIV></DIV>
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Community</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
<P><A href="getting-involved.html" title="Getting Involved">Get Involved</A><BR>
<A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A><BR>
<A href="committers.html" title="Committers">Committers</A><BR>
<A href="chinese-portal.html" title="Chinese Portal">Chinese Portal </A> <SPAN class="image-wrap" style=""><IMG src="community.data/chinese.jpg" style="border: 0px solid black"></SPAN><BR>
<A href="projects-using-tuscany.html" title="Projects Using Tuscany">Powered By</A></P>
</DIV></DIV>
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Tuscany SCA</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
<P><A href="sca-overview.html" title="SCA Overview">SCA Overview</A><BR>
<A href="sca-java.html" title="SCA Java">SCA Java</A><BR>
<A href="sca-native.html" title="SCA Native">SCA Native</A><BR>
<A href="php-sca.html" title="PHP SCA">SCA PHP</A></P>
</DIV></DIV>


<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Tuscany SDO</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
<P><A href="sdo-overview.html" title="SDO Overview">SDO Overview</A><BR>
<A href="sdo-java.html" title="SDO Java">SDO Java</A><BR>
<A href="sdo-cpp.html" title="SDO CPP">SDO C+&#43;</A><BR>
<A href="sdo-php.html" title="SDO PHP">SDO PHP</A></P>
</DIV></DIV>
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Tuscany DAS</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
<P><A href="das-overview.html" title="DAS Overview">DAS Overview </A><BR>
<A href="das-java.html" title="DAS Java">DAS Java</A><BR>
<A href="das-c.html" title="DAS C++">DAS C++ </A></P>
</DIV></DIV></TD><TD class="confluenceTd" valign="top" width="85%">

<H2><A name="Delete-TuscanySCA-DataBinding-FAQ-SCADataBindingFAQs"></A>SCA DataBinding FAQs</H2>

<OL>
	<LI><B>What is he difference between Logical Type and Physical Type?  From the comments in DataType.java, logical type is used by the assembly, physical type is used by the runtime, and for Tuscany Java the physical type is always a Java Type</B><BR>
     The logical type represents the data type the user thinks is flowing across a wire. This could be a Java type, a XML type, a CORBA type, whatever depending on the /logical/ service contract defined in the assembly.<BR>
     The physical type is the actual representation of that type that is flowed by the runtime. In the Java runtime this will always be a Java type (i.e. some subclass of Object). In some cases it will be the same as the logical type - e.g. when a Java component calls another Java component over a local wire using a Java interface then both logical and physical types will be the same. In many cases though they will be different - for example, if the service contract was WSDL then the logical type would be the XML type used by the WSDL.<BR>
     Within the runtime the same logical type may have different physical forms. For example, the same XML document could be represented physically as a DOM, a StAX stream, an SDO, a JAXB object, or an AXIOM stream. The framework supports conversion between these different physical forms. <BLOCKQUOTE></BLOCKQUOTE></LI>
	<LI><B>What is the role of a data mediator interceptor? Can you cite an example of how mediation works say for a component A with reference R that references a service S in component B.?</B><BR>
     The interceptor gets added by the connector. A's outbound wire and B's inbound wire describe the datatypes their implementations can support. When the wire ends are connected the connector adds the interceptor if mediation is needed.<BR>
     One job of a transport binding is to convert an in-memory physical representation to a suitable set of bits on the network (aka serialization and deserialization). Rather than reinvent the different transports we reuse existing implementations such as Axis2 or RMI. As such we need to convert the physical representation on our internal wire with that used by the transport. So, for example, Axis2 only understands AXIOM so in a reference we need to convert the user's physical representation to AXIOM and in a service we need to convert the AXIOM generated by the transport into the form the user's implementation requires. The steps could be described as follows:
	<OL>
		<LI>A calls reference R with physical Java object X(java)</LI>
		<LI>X is placed on R's outbound wire</LI>
		<LI>data mediation converts X(java) to AXIOM object X(axiom)</LI>
		<LI>X(axiom) is placed on inbound wire for the Axis2 binding</LI>
		<LI>Axis2 binding serializes X(axiom) onto the network as XML</LI>
		<LI>Axis2 binding on the target deserializes the XML from the network to X(axiom)</LI>
		<LI>X(axiom) is placed on the outbound wire from the Axis2 binding</LI>
		<LI>data mediation converts X(axiom) to X(java) as needed by the target component</LI>
		<LI>X(java) is placed on B's inbound wire</LI>
		<LI>the target instance for B is invoked passing in X(java)<BR>
. An important thing to note here is that from the fabric's perspective we are dealing with two physical wires: the wire on the client connecting the source component A to the outbound Axis2 transport and the wire on the server connecting the inbound Axis2 transport to the target component B.<BR>
From a global perspective there is one logical wire from A to B but because A and B are located on two different runtimes that logical wire gets split into two physical wires A-&gt;net and net-&gt;B.</LI>
	</OL>
	</LI>
</OL>

</TD></TR></TBODY></TABLE>
							</DIV>
						</DIV>
					</DIV>	
		            <!-- pageContent macro end -->
					
                </TD>
            </TR>
        </TABLE>

		<!-- footer macro -->
				<SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
		</SCRIPT>
		<SCRIPT type="text/javascript">
		   _uacct = "UA-1174707-5";
		   urchinTracker();
		</SCRIPT>
		
				<A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A>    

		<DIV class="footer">
			Copyright � 2003-2012, The Apache Software Foundation&nbsp;&nbsp;</BR>
                        Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation.
		</DIV>
		<!-- footer macro end -->

    </BODY>
</HTML>