Hi,
Can you describe the use cases you have in mind? It will help us better
understand what you want to achieve.
Are you interested in contributing in this area? I can give some pointers
and thoughts to get you started. The following is based on my on-the-surface
thoughts.
For example, you have a C/C++ DLL which provides some business functions and
you want to use them to implement SCA components.
As the first step, you can even use implementation.java to call JNI and you
just have to write an implementation class like:
@Service(Calculator.class)
public class JNICalculatorImpl implements Calculator {
static {
System.loadLibrary("calculator.dll");
}
public native int method calculate(String op, int n1, int n2);
@Reference
public Add addService;
}
And configure the component as:
<component name="JNICalculatorComponent">
<implementation.java class="calculator.dll"/>
</component>
For the second step, we can try to automate the JNI access as follows:
1) Model the component as implementation.jni:
<component name="JNICalculatorComponent">
<implementation.jni library="calculator.dll"/>
</component>
You also need to provide a componentType file to describe the JNI operations
(Potentially we can introspect the native C++ interface).
<componentType>
<service name="Calculator">
<interface.java interface="calculator.Calculator"/> <!-- This is the
java interface for the JNI functions -->
</service>
<reference name="Add">
<interface.java interface="calculator.Add"/> <!-- This is the java
interface for the JNI functions -->
</service>
</componentType>
Then we can generate the JNICalculatorImpl class as illustrated above to
represent the JNI component using ASM.
Thanks,
Raymond
--------------------------------------------------
From: ""Dietrich, Björn"" <[EMAIL PROTECTED]>
Sent: Wednesday, June 25, 2008 11:45 PM
To: <[email protected]>
Subject: AW: Apache Tuscany doubts
Hi,
We are also looking for native (JNI) binding between Java and C++,
This would be a real cool feature.
Greetings
Björn
-----Ursprüngliche Nachricht-----
Von: Malte Marquarding [mailto:[EMAIL PROTECTED]
Gesendet: Donnerstag, 26. Juni 2008 02:51
An: [email protected]
Betreff: Re: Apache Tuscany doubts
Hi,
Is there a timeline for the java runtime hosting a c++ component? We are
currently evaluating tuscany and need to access c++ components as these
are needed for specialized algorithms.
Cheers,
Malte.
At this point, Tuscany has both Java and C++ for 1). But the java
runtime doesn't support C++ component, and not C++ runtime supports
Java component either. So we have to use different runtimes to host
the C++ and Java components at this point, but it's potentially
possible that the Java runtime will be capable of hosting C++ component.
CENIT AG Systemhaus, Industriestrasse 52-54, 70565 Stuttgart, Tel.: +49
711 7825-30, Fax: +49 711 7825-4000, Internet: www.cenit.de
Geschaeftsstellen: Berlin, Duesseldorf, Frankfurt, Hamburg, Hannover,
Muenchen, Saarbruecken
Vorstandsmitglieder: Kurt Bengel, Christian Pusch
Aufsichtsratsmitglieder: Andreas Schmidt (Vorsitzender des Aufsichtsrats),
Hubert Leypoldt, Andreas Karrer
Bankverbindungen:
Deutsche Bank (BLZ 600 700 70) Kto. 1661 040 IBAN : DE85 6007 0070 0166
1040 00 SWIFT-CODE : DEUTDESS,
Commerzbank (BLZ 600 400 71) Kto. 532 015 500 IBAN : DE83 6004 0071 0532
0155 00 SWIFT-Code : COBADEFF600,
BW-Bank (BLZ 600 501 01) Kto. 2 403 313 IBAN : DE17 6005 0101 0002 4033 13
SWIFT-Code : SOLADEST
Registergericht: Amtsgericht Stuttgart
Handelsregister: HRB Nr. 19117
Umsatzsteuer: ID-Nr. DE 147 862 777