tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Tuscany: Tuscany SCA Java - FAQ (page edited)
Date Thu, 20 Sep 2007 11:20:00 GMT
Tuscany SCA Java - FAQ (TUSCANY) edited by S Venkatakrishnan
      Page: http://cwiki.apache.org/confluence/display/TUSCANY/Tuscany+SCA+Java+-+FAQ
   Changes: http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=35040&originalVersion=28&revisedVersion=29


{include: SCA Java Subproject Menu}
Welcome to the Apache Tuscany Java SCA FAQ page. Please help to keep the information on this
page current.

{panel:title=Apache Tuscany SCA Frequently Asked Questions|borderStyle=solid|borderColor=#C3CDA1|titleBGColor=#C3CDA1|bgColor=#ECF4D1}
* [Build and Devlopment Questions|#Build Questions]
** [What version of Java do I need? |#BuildA]
** [What version of Maven do I need? |#BuildB]
** [Why does the Tuscany code I checked out of Subversion not build? |#BuildC]
** [Java Heap Error during compilation|#BuildD]
** [How do I generate Eclipse projects from the source distribution or from Subversion trunk?|#BuildE]
** [How do I generate an Eclipse WTP project for the WebApp samples?|#BuildF]
** [When running the WSConfidentialityTestCase using IBM JDK I experience java.lang.ExceptionInInitializerError
arising from the base java.security.InvalidKeyException: Public key presented not for certificate
signature - how do I get over this?|#BuildG]
** [How do I run the samples from a release candidate before the maven artifacts have been
** [How do I turn on more trace output?|#BuildI]
** [How do I remote debug Tuscany Java SCA applications from Eclipse?|#BuildJ]
** [Maven locks up during a build. What's going on?|#BuildK]
* [Implementation Java Questions|#Implementation JavaQuestions]
** [What is the format for specifying multiple interfaces with the @Service annotation? |#ImplementationJavaA]**
[Why are references not being injected into my component? |#ImplementationJavaB]
* [Binding Questions|#Binding Questions]
** [Can I use the EJB binding to publish an SCA services as an SLSB? |#BindingA]
* [DataBinding Questions|#DataBinding Questions]
** [What is the difference between Logical Type and Physical Type?|#DataBindingA]
* [Contribution Questions|#Contribution Questions]
** [What is META-INF/sca-contribution.xml for?|#ContributionA]
** [What is What is META-INF/sca-deployables/ for?|#ContributionB]
* [Specification Questions|#Specification Questions]
** [Where are the specifications that Tuscany implements?|#SpecificationA]\\
* [Policy Framework Questions|#Policy Framework Questions]
** [What is the level of policy support in Tuscany Release 1.0 ?|#PolicyA]\\
** [How do I try out the 'confidentiality' policy intent for my webservice binding ?|#PolicyB]\\

h2. {anchor:Build Questions}

{bgcolor:#C3CDA1}Build Questions

h3. {anchor:BuildA}

{bgcolor:#C3CDA1}What version of Java do I need?
Both IBM and Sun JDK 1.5 are known to work and are used regularly by our development community.

JDK1.4 will not work as the Tuscany SCA code base relies on some of the features of JDK1.5
such as generics and annotations.

JDK1.6 has proven problematic due to some issues with bundled XML stream parsing support that
clashes with the support that Tuscany gets from elsewhere. This issue is under investigation.
If you are getting errors starting with the following stack trace this is likely to be because
you are using JDK 1.6

javax.xml.stream.FactoryConfigurationError: Provider
javax.xml.stream.XMLInputFactory could not be
instantiated: java.lang.InstantiationException

h3. {anchor:BuildB}

{bgcolor:#C3CDA1}What version of Maven do I need?
To build the Apache Tuscany source code that you have checked out of subversion you need to
install Maven. The build is know to work relatively reliably with Maven 2.0.5. People have
had it working with later versions but it you are encountering unpredicatbility in the build
then give 2.0.5 a go.

h3. {anchor:BuildC}

{bgcolor:#C3CDA1}Why does the Tuscany code I checked out of Subversion not build?
If you are taking code out of the trunk of the Tuscany Subversion repository then you may
have been unlucky and picked up a revision of the code where the build is broken. As trunk
is where the development takes place this happens now and again although the development community
tries to avoid build breaks if at all possible and tries to fix them quickly when they do

There are may and various other things that can cause your build to break. Its worth checking
on the mail list that the trunk is building. Assuming that it is we will usually ask you to
do the following as a basic level set.

Stop any ide you may have running
Check out the latest trunk revision

 cd mytuscanydir
 svn checkout [https://svn.apache.org/repos/asf/incubator/tuscany/java/]

or (if you already have a version of the code)

 svn update [https://svn.apache.org/repos/asf/incubator/tuscany/java/]

Clean all the maven projects

 cd mytuscanydir/sca
 mvn clean

Remove all the sca artifacts from the local maven repository by removing (or renaming) all
of the directories under


Rebuild sca

 cd mytuscanydir/sca

If it still doesn't work then get back on the mail list

h3. {anchor:BuildD}

{bgcolor:#C3CDA1}Java Heap error during compilation
I always get a "Java heap space" error during the build while the itests are running these
days. Runs fine if I build from within the itests folder but building from the top sca folder
always fails.

try "MAVEN_OPTS="-Xmx1024m \-Xms512m" or You can also increase the memory options in the sca
pom [1], in the surefire plugin configuration section.

[1] [https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/pom.xml]

h3. {anchor:BuildE}

{bgcolor:#C3CDA1}How do I generate Eclipse projects from the source distribution or from Subversion
If you have unpacked the source distribution or have checked out all of the code under the
tuscany/java/sca directory in subversion then you should end up with a source directory containing
something like:
You can build the source from using maven with the command
You can also build Eclipse projects for all the modules in the project using the command
mvn -Peclipse eclipse:eclipse
This builds ".classpath" and ".project" files for each modules. The easiest thing to do is
import all of these generated projects. In Eclipse choose "File/Import/Existing Projects Into
Workspace". From the wizard select your source directory and Eclipse should now find all of
the Eclipse projects that have been generated.

If you imported all modules into Eclipse you should find that project dependencies are satisfied
by reference to other Tuscany SCA projects in your workspace. This is convenient for debugging
as all Tuscany SCA source it now available in your workspace.

h3. {anchor:BuildF}

{bgcolor:#C3CDA1}How do I generate an Eclipse WTP project for the WebApp samples?
If you're using Eclipse WTP and want to get WTP Web Projects generated for our Webapp samples
you can simply pass a \-Dwtpversion=1.5 option tothe usual mvn eclipse:eclipse command, like
mvn -Dwtpversion=1.5 -Peclipse eclipse:eclipse
The magic \-Dwtpversion=1.5 option will add the WTP Web project nature to all the Eclipse
projects with <packaging>war</packaging> in their Maven pom.xml. You'll then be
able to add these projects to a WTP Tomcat or Geronimo Server configuration, to publish and
run them straight from your Eclipse workspace.

h3. {anchor:BuildG}

{bgcolor:#C3CDA1}When running the WSConfidentialityTestCase using IBM JDK I experience java.lang.ExceptionInInitializerError
arising from the base java.security.InvalidKeyException: Public key presented not for certificate
signature - how do I get over this?
To get over this exception please go over to the jre\lib\security\java.security of the IBM
JDK installation and set up the security providers as follows.
# List of providers and their preference orders:

h3. {anchor:BuildH}
{bgcolor:#C3CDA1}How do I run the samples from a release candidate before the maven artifacts
have been published?

The samples in the binary distribution won't build with mvn till we actually release and the
artifacts get published to the live maven repository. To test things you can bypass this by
setting up a mirror pointing to the release candidate maven repository. You do that by adding
the following to your maven settings.xml file:


The settings.xml is in a .m2 folder in your home directory, eg mines at: "C:\Documents and
Settings\Administrator\.m2". If you don't have one then we've an example at: [settings.xml|https://svn.apache.org/repos/asf/incubator/tuscany/java/etc/settings.xml]

h3. {anchor:BuildI}
{bgcolor:#C3CDA1}How do I turn on more trace output?
Tuscany uses the JDK logger for writing out info, warning etc. How much gets written out is
controlled by a logging.properties file. We don't ship a file with Tuscany as we rely in the
default INFO logging level that Java assumes. If you wan't to change the defaults then you
can create (or edit) a logging.properties file in you jre/lib directory. Foe example, if you're
using the IBM JDK you should end up with the file

C:\thedirwhereiinstalledjava\jre\lib\logging properties

You might want to go and change the logging level by setting it to FINE to get more information

.level= FINE

or for getting more information printed on the console

java.util.logging.ConsoleHandler.level = INFO

See [here|http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html] for some overview
information about JDK logging.

h3. {anchor:BuildJ}
{bgcolor:#C3CDA1}How do I remote debug Tuscany Java SCA applications from Eclipse?

There are many good articles about how to turn on java remote debugging, for exampe, [here's

The long and short of it is that you need to tell the JVM to list on a port for debug connections.
For example, here the Calculator sample is being debugged.

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator.jar;.calculator.CalculatorClient
Listening for transport dt_socket at address: 8000
3 + 2=5.0
3 - 2=1.0
3 * 2=6.0
3 / 2=1.5

The important bits are the arguments starting -X. Note the address is set to port 8000. In
Eclipse you can then simply open the debug dialog and create a new "Remote Java Application"
profile specifying the port of 8000 to match the above command line. 

Assuming that you have the Tuscany SCA source available to Eclipse you can then debug through
the calculator sample and the Tuscany SCA code. 

h3. {anchor:BuildK}
{bgcolor:#C3CDA1}Maven locks up during a build. What's going on?
The short answer is that we don't know. However we have seen this occasionally on Windows
and is some cases it can be tracked back to some kind of interaction between Maven and other
applications running on the machine. So the first thing to try is to stop all other applications
that you are running and retry the Maven build and see if that helps.

h2. {anchor:Implementation JavaQuestions}

{bgcolor:#C3CDA1}Implementation Java Questions

h3. {anchor:ImplementationJavaA}

{bgcolor:#C3CDA1}What is the format for specifying multiple interfaces with the @Service annotation?
@Service(interfaces={Interface1.class, Interface2.class, Interface3.class} )
public class ServiceImpl implements Interface1, Interface2, Interface3{

h3. {anchor:ImplementationJavaB}

{bgcolor:#C3CDA1}Why are references not being injected into my component?
If you have a component implementation that looks something like...
public class ServiceImpl implements ServiceInterface1{
 ServiceInterface2 serviceReference1;

 private ServiceInterface2 serviceReference2;

 protected ServiceInterface2 serviceReference3;

 public ServiceInterface2 serviceReference4;

Then in you operation you will find that serviceReference1 and serviceReference2 are null
because SCA will only inject references into fields marked protected or public. This is true
for the other injecting annotations, for example, @Callback, @ConversationId and @Context.

h2. {anchor:Binding Questions}

{bgcolor:#C3CDA1}Binding Questions

h3. {anchor:BindingA}

{bgcolor:#C3CDA1}Can I use the EJB binding to publish an SCA services as an SLSB?
Unfortunately, we only have the reference binding support for SLSB (call
SLSB from SCA) in Tuscany at this moment. Any contribution to support SLSB
service binding is welcome. :-)

h2. {anchor:DataBinding Questions}

{bgcolor:#C3CDA1}DataBinding Questions

h3. {anchor:DataBindingA}

{bgcolor:#C3CDA1}What is he difference between Logical Type and Physical Type?
 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.
 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.
 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

# *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.?*
 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.
 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:
## A calls reference R with physical Java object X(java)
## X is placed on R's outbound wire
## data mediation converts X(java) to AXIOM object X(axiom)
## X(axiom) is placed on inbound wire for the Axis2 binding
## Axis2 binding serializes X(axiom) onto the network as XML
## Axis2 binding on the target deserializes the XML from the network to X(axiom)
## X(axiom) is placed on the outbound wire from the Axis2 binding
## data mediation converts X(axiom) to X(java) as needed by the target component
## X(java) is placed on B's inbound wire
## the target instance for B is invoked passing in X(java)
. 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.
>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->net
and net->B.

h2. {anchor:Contribution Questions}

{bgcolor:#C3CDA1}Contribution Questions

h3. {anchor:ContributionA}

{bgcolor:#C3CDA1}What is META-INF/sca-contribution.xml for?
The [SCA Assembly Model Specification V1.00|http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications]
describes this file in section  Any composites that are named in the sca-contribution.xml
file will be automatically be included in the deployable list maintained by the contribution.

If you have a contribution in a directory say.


Then all composites, along with any other resources, under this directory will be located
by the contribution service. For example, assume we have


Where sca-contribution.xml is

<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
 <deployable composite="mycomposite:MyComposite"/>

So in this case the contribution service will locate the file mycomposite.composite and, assuming
it contains a composite called mycomposite:MyComposite, will present it as being deployable
based on the information in sca-contribution.xml.

h3. {anchor:ContributionB}

{bgcolor:#C3CDA1}What is META-INF/sca-deployables/ for?
This is a Tuscany specific shorthand for defining deployable components, i.e. you won't find
it in the SCA specifications.

If you have a contribution in a directory say.


Then all components in composites under this directory will be located by the contribution
service and any components in composites under the directory /META-INF/sca-deployables/ will
automatically be included in the deployable list maintained by the contribution, for example


h2. {anchor:Specification Questions}

{bgcolor:#C3CDA1}Specification Questions

h3. {anchor:SpecificationA}

{bgcolor:#C3CDA1}Where are the specifications that Tuscany implements?
You can find the 6 SCA technical committees here:


Meeting minutes, documents, issues and so on are linked from the main page.

Mailing list archives can be found here:


h2. {anchor:Policy Framework Questions}

{bgcolor:#C3CDA1}Policy Framework Questions

h3. {anchor:PolicyA}

{bgcolor:#C3CDA1}What is the level of policy support in Tuscany Release 1.0 ?
In Java SCA Release 1.0, policy intents and policysets can be defined for an SCA Domain in
the definitions.xml file and specified for various SCA Artifacts in assembly composites (composite,
component, services, references, bindings, implementation).  With respect to processing, computing
aplicable policies and applying them is concerned here is what the Release 1.0 supports:
- appplicable policysets are computed only for 'binding' elements only i.e. only Interaction
Policies are supported.  The next release will have support for 'implementation' elements
- definition of policy attachments to represent axis2 config params.  As sample representations
of this, there are itests in the binding-ws-axis2 module and there is a sample (helloworld-ws-service-secure)
that defines policies to enable ws-security in Axis2.  The intents that are supported in the
itests and sample are athentication, integrity and confidentiality
- the itest and sample does not exercise confidentiality intent due to legal issues that Tuscany
has with respect to distributing bouncycastle encryption provider jars.
- support for WS-Policy attachments, annotated intents and policyset are not yet supported

h3. {anchor:PolicyB}
{bgcolor:#C3CDA1}How do I try out/exercise the 'confidentiality' policy intent for the Axis2
WS binding ?
- First you must ensure that you are not encumbered by the legal and licensing requirements
of bouncycastle.  There are algorithms in the bouncycastle distributions (such as IDEA) that
have patent obligations and you are responsible for sorting this out for yourself.
- Next you must be familiar with setting up Axis2 for confidentiality.  Here are some useful
links for this http://wso2.org/library/234, http://wso2.org/library/174, http://wso2.org/library/255.
- The itest in the ws-binding-axis2 module and the helloworld-ws-service-secure have definitions.xml
file that define the intents and policyset for confidentiality.  Change the values that have
been provided in the Axis2ConfigParam policy attachment, to suit what you have defined for
your application - such as the keystore, the userid and password to the keystore, the password
callback handler class etc.
- Now, specify the confidentiality intent on any of the binding.ws elements in your application
composite and ensure that the bcprov-jdk15-132.jar is in the classpath.  
- Some JREs might require a bit of tweaking with the security.policy settings that deal with
encryption providers.  We have tried and tested this successfuly on Sun and IBM JREs.


This message is automatically generated by Confluence

Unsubscribe or edit your notifications preferences

If you think it was sent incorrectly contact one of the administrators

If you want more information on Confluence, or have a bug to report see

To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org

View raw message