summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/tuscany-sca-databinding-faq.html
blob: 9c2489b29b3a04c1caccf6850c1e80d7da7604da (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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <HEAD>
        <LINK type="text/css" rel="stylesheet" href="http://people.apache.org/~svkrish/tuscanySite/style/default.css">
        <LINK rel="SHORTCUT ICON" href="http://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">   
        <TITLE>Tuscany SCA - DataBinding - FAQ : Apache Tuscany</TITLE>
    <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
    
    <BODY onload="init()">
        
            <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://people.apache.org/~svkrish/tuscanySite/images/TuscanyLogoNEW_Text_120px_bg.jpg">
        <TR>
            <TD valing="top" align="left">
			    <A href="http://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://people.apache.org/~svkrish/tuscanySite/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
			</TD>
			<TD>
                <A href="http://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://people.apache.org/~svkrish/tuscanySite/images/TuscanyLogo.jpg" border="0"></A>
            </TD>
            
            <TD width="100%">
                &nbsp;
            </TD>
            <TD align="right">
                <IMG src="http://people.apache.org/~svkrish/tuscanySite/images/apache-incubator-logo.png" border="0">
            </TD>

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

        </TR>
    </TABLE>

            <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-subproject.html" title="SCA Java Subproject">SCA Java Subproject</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="Tuscany SCA - DataBinding - FAQ">Tuscany SCA - DataBinding - FAQ</A>
            </TD>
            
            <TD align="left" valign="middle" class="topBarDiv" nowrap="true">
            <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>&nbsp;&nbsp;
            </TD>
        </TR>
    </TABLE>

        <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
            <TR>
                <TD align="left" valign="top">
                        <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%">
<DIV class="panel" style="border-style: solid; border-color: #C3CDA1; "><DIV class="panelHeader" style="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>
<SPAN class="nobr"><A href="http://www.apache.org/licenses/LICENSE-2.0.html" title="Visit page outside Confluence" rel="nofollow">License <SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN><BR>
<A href="tuscany-downloads.html" title="Tuscany Downloads">Downloads</A><BR>
<A href="issue-tracking.html" title="Issue Tracking">Found a Bug?</A></P>
</DIV></DIV>
<DIV class="panel" style="border-style: solid; border-color: #b4b4b5; "><DIV class="panelHeader" style="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="events.html" title="Events">Events </A><BR>
<A href="getting-involved.html" title="Getting Involved">Get Involved</A><BR>
<A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A><BR>
<SPAN class="nobr"><A href="http://apache-tuscany.blogspot.com/" title="Visit page outside Confluence" rel="nofollow">Blog <SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P>
</DIV></DIV>
<DIV class="panel" style="border-style: solid; border-color: #b4b4b5; "><DIV class="panelHeader" style="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-subproject.html" title="SCA Java Subproject">SCA Java</A><BR>
<A href="sca-cpp.html" title="SCA CPP">SCA Native</A><BR>
<A href="php-sca.html" title="PHP SCA">PHP SCA</A><BR>
<A href="sca-releases.html" title="SCA Releases">SCA Releases</A></P>
</DIV></DIV>


<DIV class="panel" style="border-style: solid; border-color: #b4b4b5; "><DIV class="panelHeader" style="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></P>
</DIV></DIV>
<DIV class="panel" style="border-style: solid; border-color: #b4b4b5; "><DIV class="panelHeader" style="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-overview.html" title="DAS Overview">DAS types</A></P>
</DIV></DIV></TD><TD class="confluenceTd" valign="top" width="85%">

<H2><A name="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>
                </TD>
            </TR>
        </TABLE>

            <DIV class="footer">
        Copyright &copy; 2003-2007, The Apache Software Foundation&nbsp;&nbsp;
    </DIV>

    </BODY>
</HTML>