Call COM Components using JNI
Hi,
Can we call COM Components using JNI? If yes can someone pls guide me how to go about it
Thanks
Guriqbal
JNIWrapper 2.0 Beta with Java-COM integration is already available for download and evaluation. Check the http://www.jniwrapper.com/news.jsp
Hope this helps.
EToporov
Similar Messages
-
I am able to call ordinary dlls from my java application using JNI, by exporting the function from my DLL.
What can I do to call COM DLLs using JNI which do not expose the
Functions directly.
please help!
thanx,
-sachinIs this a COM dll that you have written or do you merely have the dll?
If you merely have the dll, there are some third party tools that will generate Java interfaces to COM objects from the dll.
Although I don't endorse these products or work for them I've used them before with some success:
o J-Integra -- http://www.intrinsyc.com/
o jacoZoom -- http://www.infozoom.de/
-- rob -
Is it possible to call c# dll using JNI
Using JNI we can invoke native code written in c or c++.
Steps:
1) All we have to do is write a class and have a method of type native.
2) Invoke javah with -jni option to create a .h file.
3) Include this header file and implement the method in c or c++ code.
Now my question is:
Is it possible to call I want to know whether we can implement the native method in c# instead of c or c++.
ThanksNo you can't, but you can have the JNI C/C++ code call C# code. How to do that is no longer a JNI question but a C# question.
-
Problem calling C# dll using JNI
Hi,
I'm trying to call C# functions from a JNI interface. I built a C++ DLL to link the Java and C# calls together, but I am always getting the same error. Calling the C# DLL directly from the C++ code (compiled as an application) does not cause this error. I have to be able to connect our java application with a third party C# DLL, so I cannot just right the DLL directly in C++... Here is my code:
//C# Class Library::
namespace ClassLibrary2
/// <summary>
/// Summary description for Class1.
/// </summary>
public class Class1
public Class1()
// TODO: Add constructor logic here
public void Bidon1()
MessageBox.Show("Affiche", "Toi", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//C++ DLL::
#using "ClassLibrary2.dll"
BOOL APIENTRY DLLMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
return TRUE;
JNIEXPORT void JNICALL Java_com_blablabla_CommJNIDLL_Init
(JNIEnv * enivronmt, jobject obj)
new ClassLibrary2::Class1();
(new ClassLibrary2::Class1())->Bidon1();
Olivier dit :
//Java JNI Calls::
//From CommJNIDLL::
static {
System.loadLibrary("MyCDLL");
public native void Init(); If I comment the calls within the C++ DLL, they get fired, and no exception is raised. What am I doing wrong?
Thanks, bumpertHi,
I am currently also trying to call some C# code within JNI. So far I have managed to call some simple C# code in Java through JNI based on the example on codeproject. However, now my problem is that instead of doing JNI-->C++->M C++->C#, I need to include one more reference to some other DLLs in the C# code. Therefore I need to do JNI-->C++-->M C++-->C#-->DLL. So is there a way to do this? I can compile all the code sucessfully in C++, but when I try to execute the .netmodule (for C#) and DLL for C++ through JNI in Java, it gives me an error. I have tried to put all the relevant DLLs in the same directory, but it still does not work. So is there someway to combine the .netmodule of C# with the DLLs it references to? Perhaps that could solve the problem? I am new to C# and C++, really appreciate if someone can give some advices since there's nothing much on the net.
thanks,
Lee -
Error calling COM+ webservice
Hey guys,
I am having problems to call COM+ webservices using Mediator.
My composite needs to call some legacy Delphi DLL that are published in a Windows 2003 COM+ SOAP services.
When I try to call the services using the HTTP Analyser tool, everything works fine. However, when I try to call it in my composite application using a Mediator component, I got the following exception:
javax.xml.ws.soap.SOAPFaultException: **** System.Runtime.Serialization.SerializationException - Parse Error, no assembly associated with Xml key wsa Action.
Have anybody faced problems like this to call COM+ SOAP services?
Here is my COM+ SOAP WSDL:
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions
name="StringCon"
targetNamespace="http://oracle.com/sca/soapservice/InternaliazacaoApp/StringCon/StringCon"
xmlns:tns="http://oracle.com/sca/soapservice/InternaliazacaoApp/StringCon/StringCon"
xmlns:inp1="http://xmlns.oracle.com/singleString"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:documentation>
<abstractWSDL>http://anvisa-soa-dev:8001/soa-infra/services/default/StringCon!1.0/StringCon.wsdl</abstractWSDL>
</wsdl:documentation>
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://xmlns.oracle.com/singleString" schemaLocation="http://anvisa-soa-dev:8001/soa-infra/services/default/StringCon/StringCon?XSD=xsd/singleString.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="requestMessage">
<wsdl:part name="input" element="inp1:singleString"/>
</wsdl:message>
<wsdl:message name="replyMessage">
<wsdl:part name="output" element="inp1:singleString"/>
</wsdl:message>
<wsdl:portType name="execute_ptt">
<wsdl:operation name="execute">
<wsdl:input message="tns:requestMessage"/>
<wsdl:output message="tns:replyMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="execute_pttBinding" type="tns:execute_ptt">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="execute">
<soap:operation style="document" soapAction="execute"/>
<wsdl:input>
<soap:body use="literal" namespace="http://oracle.com/sca/soapservice/InternaliazacaoApp/StringCon/StringCon"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="http://oracle.com/sca/soapservice/InternaliazacaoApp/StringCon/StringCon"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="StringCon">
<wsdl:port name="execute_pt" binding="tns:execute_pttBinding">
<soap:address location="http://anvisa-soa-dev:8001/soa-infra/services/default/StringCon/StringCon"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Edited by: 904488 on Dec 26, 2011 5:56 AMsoa suite ws binding sends out wsa headers - that is what fails to be parsed on the .NET side ("Parse Error, no assembly associated with Xml key wsa Action.")
there is a flag on the outbound ws binding properties (omit.wsa.headers) that let's you turn this off. -
How can i call a VB6 project from my java application using JNI
hi
can anyone tell me the procedure of calling a VB6 project from any java application using JNI
if anyone does know then tell me the detail procedure of doing that. I know that i have to create a dll of that VB6 project then to call it from the java application.
if anyone know that procedure of creating dll file of an existing VB6 project please reply
please if anyone know then let me knowAhh, kind of a duplicate thread:
http://forums.java.sun.com/thread.jspa?threadID=631642
@OP. You could have clarified your original post and the relationship of your question to java. You did not need a new thread.
� {� -
JVM Crash When Using JNI and COM
I'm trying to call a DLL compiled from VB6 source code that I do not have access to. The VB6 code simply retrieves data from a DB2 database using ADO and my client code grabs that data and marshals it to my Java code. I'm attempting to achieve this using JNI and COM (without a third-party bridge). It works 75% of the time, but the other 25% of the time, the JVM crashes with the usual Hotspot crash log containing an access violation exception. However, I don't know what in my C++ code (VC++ 8) could be causing this except for passing a "wild" pointer to the code lying underneath the COM object interface. If that is the case, I don't know how I am doing that.
The Java code that is calling my native method is running on Tomcat 5.5.25 and just to be safe, I am not allowing multiple threads to concurrently call the method in my JNI DLL (though I realize that this will kill performance). Once I can get past this problem, I'll do the COM interfacing on a worker thread in my native code so I don't screw up CoInitialize and CoUninitialize calls in the case the same thread is concurrently executing multiple calls to my native code.
I've noticed that in most cases, the JVM crashes during my call to the pClsAccount->OpenConnection method. However, my DLL isn't what is listed on the top of the call stack, which is why I suspect the passing of a wild pointer, though I'm just taking a guess at that. Does anyone have an idea as to what's going on ?
JNIEXPORT jobject JNICALL Java_CustomerInfo_nGetCustomerAccountInfo(JNIEnv *env, jobject customerInfo, jstring accountNumber, jstring iniFileName)
jboolean isCopy;
// Account info class and instance to be instantiated
jclass accountInfoCls = NULL;
jobject accountInfoObj = NULL;
// The constructor ID of the accountInfoCls
jmethodID ctorID = NULL;
// Pointer to the interface for the ClsAccount COM object
_clsAccount *pClsAccount = NULL;
HRESULT hr;
BSTR bstrIniFileName(L"");
try
const char *nativeAccountNumber = NULL;
if (accountNumber != NULL)
nativeAccountNumber = env->GetStringUTFChars(accountNumber, &isCopy);
else
jclass newExcCls;
env->ExceptionDescribe();
env->ExceptionClear();
newExcCls = env->FindClass("java/lang/IllegalArgumentException");
env->ThrowNew(newExcCls, "accountNumber passed in was null !");
return NULL;
// Initialization
variantt varConnectionSucceeded = variantt(false);
variantt varGetAccountInfoSucceeded = variantt(false);
variantt varAccountNumber = variantt(nativeAccountNumber);
bstrt bstrLastPaymentDate = bstrt();
bstrt bstrLastErrorMessage = bstrt();
bstrt bstrLastErrorNumber = bstrt();
jlong jTotalDue = NULL;
jlong jEstablishedDueDay = NULL;
jlong jLastPaymentAmount = NULL;
jstring jLastPaymentDate = NULL;
jstring jLastErrorMessage = NULL;
jstring jLastErrorNumber = NULL;
jthrowable jException = NULL;
const char *chLastPaymentDate = NULL;
const char *chLastErrorMessage = NULL;
const char *chLastErrorNumber = NULL;
long long totalDue;
long long lastPaymentAmount;
long establishedDueDateDay;
//Convert string from Java string to C string to VB string
const char *nativeIniFileName = NULL;
if (iniFileName != NULL)
nativeIniFileName = env->GetStringUTFChars(iniFileName, &isCopy);
else
jclass newExcCls;
env->ExceptionDescribe();
env->ExceptionClear();
newExcCls = env->FindClass("java/lang/IllegalArgumentException");
env->ThrowNew(newExcCls, "iniFileName passed in was null");
return NULL;
bstrIniFileName = comutil::ConvertStringToBSTR(nativeIniFileName);
CoInitialize(NULL);
// Create an instance of the COClass with the interface over it
hr = CoCreateInstance(__uuidof(clsAccount), NULL, CLSCTX_INPROC_SERVER, __uuidof(_clsAccount), (void **)&pClsAccount);
if (hr == S_OK)
varConnectionSucceeded.boolVal = pClsAccount->OpenConnection(&bstrIniFileName);
 
if (varConnectionSucceeded.boolVal == -1)
varGetAccountInfoSucceeded.boolVal = pClsAccount->GetAccountPaymentInformation(&(varAccountNumber.GetVARIANT()));
env->ReleaseStringUTFChars(accountNumber, nativeAccountNumber);
// Extract all available account information from the ClsAccount object
if (varGetAccountInfoSucceeded.boolVal == -1)
totalDue = pClsAccount->TotalDue.int64;
establishedDueDateDay = pClsAccount->EstablishedDueDateDay;
lastPaymentAmount = pClsAccount->LastPaymentAmount.int64;
bstrLastPaymentDate = pClsAccount->LastPaymentDate;
chLastPaymentDate = comutil::ConvertBSTRToString(bstrLastPaymentDate.GetBSTR());
jTotalDue = (jlong)totalDue;
jEstablishedDueDay = (jlong)establishedDueDateDay;
jLastPaymentAmount = (jlong)lastPaymentAmount;
jLastPaymentDate = env->NewStringUTF(chLastPaymentDate);
delete[] chLastPaymentDate;
pClsAccount->CloseConnection();
// Populate error fields if any errors occur
bstrLastErrorMessage = pClsAccount->LastErrMessage;
chLastErrorMessage = comutil::ConvertBSTRToString(bstrLastErrorMessage.GetBSTR());
bstrLastErrorNumber = pClsAccount->LastErrNumber;
chLastErrorNumber = comutil::ConvertBSTRToString(bstrLastErrorNumber.GetBSTR());
jLastErrorMessage = env->NewStringUTF(chLastErrorMessage);
jLastErrorNumber = env->NewStringUTF(chLastErrorNumber);
delete[] chLastErrorMessage;
delete[] chLastErrorNumber;
const char* clsName = "com/nuance/merchantsmutual/businessentities/CustomerAccountInfo";
// Find the Java class and the ID of its constructor
accountInfoCls = env->FindClass(clsName);
ctorID = env->GetMethodID(accountInfoCls, "<init>", "(JJJLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
jException = env->ExceptionOccurred();
if (jException != NULL)
env->ExceptionDescribe();
env->ExceptionClear();
//Release all resources associated with the ClsAccount instance
pClsAccount->Release();
//Instantiate the class with the given parameters
accountInfoObj = env->NewObject(accountInfoCls, ctorID, jTotalDue, jEstablishedDueDay, jLastPaymentAmount, jLastPaymentDate, jLastErrorMessage, jLastErrorNumber);
jException = env->ExceptionOccurred();
if (jException != NULL)
env->ExceptionDescribe();
env->ExceptionClear();
else if (hr == REGDB_E_CLASSNOTREG)
cout << "COM class not registered" << endl;
else if ( hr == CLASS_E_NOAGGREGATION)
cout << "COM class can't be aggregated" << endl;
else if (hr == E_NOINTERFACE)
cout << "No interface for COM class clsAccount" << endl;
else if (hr == E_POINTER)
cout << "*ppv pointer was NULL !" << endl;
else
cout << "Error occurred while creating COM object. HR is [" << hr << "]" << endl;
// Free the BSTR because a new one was returned with a call to comutil::ConvertStringToBSTR
SysFreeString(bstrIniFileName);
// Release the string when it's no longer needed. MUST call if string won't be used
// anymore or else a memory leak will occur
env->ReleaseStringUTFChars(iniFileName, nativeIniFileName);
CoUninitialize();
 
catch (_com_error &e)
cout << "Encountered an exception in GetCustomerAccountInfo: Error was " << e.ErrorMessage();
pClsAccount->Release();
catch (...)
pClsAccount->Release();
return accountInfoObj;
Edited by: Cthulhu76 on Jan 5, 2010 9:18 AM0x49202400 JavaThread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon [_thread_blocked, id=5340, stack(0x49bf0000,0x49c40000)]
0x48a7e800 JavaThread "Thread-1" [_thread_in_native, id=5976, stack(0x48f00000,0x48f50000)]
0x48a0dc00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3072, stack(0x48c60000,0x48cb0000)]
0x48a09000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=4988, stack(0x48c10000,0x48c60000)]
0x48a07c00 JavaThread "Attach Listener" daemon [_thread_blocked, id=3124, stack(0x48bc0000,0x48c10000)]
0x48a07000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2572, stack(0x48b70000,0x48bc0000)]
0x489f5c00 JavaThread "Finalizer" daemon [_thread_blocked, id=5752, stack(0x48b20000,0x48b70000)]
0x489f4c00 JavaThread "Reference Handler" daemon [_thread_blocked, id=2596, stack(0x48ad0000,0x48b20000)]
0x003c6000 JavaThread "main" [_thread_in_native, id=4252, stack(0x00820000,0x00870000)]
Other Threads:
0x489f0400 VMThread [stack: 0x48a80000,0x48ad0000] [id=5624]
0x48a18800 WatcherThread [stack: 0x48cb0000,0x48d00000] [id=1192]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 36288K, used 12762K [0x02940000, 0x050a0000, 0x07800000)
eden space 32256K, 34% used [0x02940000, 0x0343af58, 0x048c0000)
from space 4032K, 37% used [0x04cb0000, 0x04e2ba28, 0x050a0000)
to space 4032K, 0% used [0x048c0000, 0x048c0000, 0x04cb0000)
tenured generation total 483968K, used 7518K [0x07800000, 0x250a0000, 0x42940000)
the space 483968K, 1% used [0x07800000, 0x07f57958, 0x07f57a00, 0x250a0000)
compacting perm gen total 14080K, used 14016K [0x42940000, 0x43700000, 0x46940000)
the space 14080K, 99% used [0x42940000, 0x436f0320, 0x436f0400, 0x43700000)
No shared spaces configured.
Dynamic libraries:
0x00400000 - 0x0040f000 C:\Program Files\Apache Software Foundation\Tomcat 5.5\bin\tomcat5.exe
0x7c800000 - 0x7c8c0000 C:\WINDOWS\system32\ntdll.dll
0x77e40000 - 0x77f42000 C:\WINDOWS\system32\kernel32.dll
0x77380000 - 0x77411000 C:\WINDOWS\system32\USER32.dll
0x77c00000 - 0x77c48000 C:\WINDOWS\system32\GDI32.dll
0x77f50000 - 0x77feb000 C:\WINDOWS\system32\ADVAPI32.dll
0x77c50000 - 0x77cef000 C:\WINDOWS\system32\RPCRT4.dll
0x76f50000 - 0x76f63000 C:\WINDOWS\system32\Secur32.dll
0x77ba0000 - 0x77bfa000 C:\WINDOWS\system32\MSVCRT.dll
0x7c8d0000 - 0x7d0cf000 C:\WINDOWS\system32\SHELL32.dll
0x77da0000 - 0x77df2000 C:\WINDOWS\system32\SHLWAPI.dll
0x76290000 - 0x762ad000 C:\WINDOWS\system32\IMM32.DLL
0x77420000 - 0x77523000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55\comctl32.dll
0x6d7c0000 - 0x6da10000 C:\Program Files\Java\jre1.6.0_07\bin\client\jvm.dll
0x76aa0000 - 0x76acd000 C:\WINDOWS\system32\WINMM.dll
0x7c340000 - 0x7c396000 C:\WINDOWS\system32\MSVCR71.dll
0x6d270000 - 0x6d278000 C:\Program Files\Java\jre1.6.0_07\bin\hpi.dll
0x76b70000 - 0x76b7b000 C:\WINDOWS\system32\PSAPI.DLL
0x6d770000 - 0x6d77c000 C:\Program Files\Java\jre1.6.0_07\bin\verify.dll
0x6d310000 - 0x6d32f000 C:\Program Files\Java\jre1.6.0_07\bin\java.dll
0x6d7b0000 - 0x6d7bf000 C:\Program Files\Java\jre1.6.0_07\bin\zip.dll
0x6d570000 - 0x6d583000 C:\Program Files\Java\jre1.6.0_07\bin\net.dll
0x71c00000 - 0x71c17000 C:\WINDOWS\system32\WS2_32.dll
0x71bf0000 - 0x71bf8000 C:\WINDOWS\system32\WS2HELP.dll
0x71b20000 - 0x71b61000 C:\WINDOWS\system32\mswsock.dll
0x5f270000 - 0x5f2ca000 C:\WINDOWS\system32\hnetcfg.dll
0x71ae0000 - 0x71ae8000 C:\WINDOWS\System32\wshtcpip.dll
0x76ed0000 - 0x76efa000 C:\WINDOWS\system32\DNSAPI.dll
0x76f70000 - 0x76f77000 C:\WINDOWS\System32\winrnr.dll
0x76f10000 - 0x76f3e000 C:\WINDOWS\system32\WLDAP32.dll
0x76f80000 - 0x76f85000 C:\WINDOWS\system32\rasadhlp.dll
0x4a6a0000 - 0x4a6ac000 C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\MMI\WEB-INF\lib\CustomerInfoProxy.dll
0x77670000 - 0x777a9000 C:\WINDOWS\system32\ole32.dll
0x77d00000 - 0x77d8b000 C:\WINDOWS\system32\OLEAUT32.dll
0x7c420000 - 0x7c4a7000 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989\MSVCP80.dll
0x78130000 - 0x781cb000 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989\MSVCR80.dll
0x777b0000 - 0x77833000 C:\WINDOWS\system32\CLBCatQ.DLL
0x77010000 - 0x770d6000 C:\WINDOWS\system32\COMRes.dll
0x77b90000 - 0x77b98000 C:\WINDOWS\system32\VERSION.dll
0x75da0000 - 0x75e5d000 C:\WINDOWS\system32\SXS.DLL
0x75e60000 - 0x75e87000 C:\WINDOWS\system32\apphelp.dll
0x4dc30000 - 0x4dc5e000 C:\WINDOWS\system32\msctfime.ime
0x4b0d0000 - 0x4b395000 C:\WINDOWS\system32\xpsp2res.dll
0x71bb0000 - 0x71bb9000 C:\WINDOWS\system32\WSOCK32.dll
0x4bbe0000 - 0x4bbea000 C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\MMI\WEB-INF\lib\ClearTranProxy.dll
0x745e0000 - 0x7489e000 C:\WINDOWS\system32\msi.dll
0x71c40000 - 0x71c97000 C:\WINDOWS\system32\NETAPI32.dll
0x4bc50000 - 0x4bc6c000 C:\WINDOWS\system32\DBNETLIB.DLL
0x71f60000 - 0x71f64000 C:\WINDOWS\system32\security.dll
0x76c90000 - 0x76cb7000 C:\WINDOWS\system32\msv1_0.dll
0x76cf0000 - 0x76d0a000 C:\WINDOWS\system32\iphlpapi.dll
0x761b0000 - 0x76243000 C:\WINDOWS\system32\crypt32.dll
0x76190000 - 0x761a2000 C:\WINDOWS\system32\MSASN1.dll
0x4bcf0000 - 0x4bcff000 C:\Program Files\Common Files\System\Ole DB\SQLOLEDB.RLL
0x4a8a0000 - 0x4a8aa000 C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\MMI\WEB-INF\lib\MIGI.DLL
0x73570000 - 0x736c2000 C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\MMI\WEB-INF\lib\MSVBVM60.DLL
0x4a950000 - 0x4a9e2000 C:\Program Files\Common Files\System\ado\msado15.dll
0x74a50000 - 0x74a6a000 C:\WINDOWS\system32\MSDART.DLL
0x4c850000 - 0x4c8c9000 C:\Program Files\Common Files\System\Ole DB\oledb32.dll
0x4dbb0000 - 0x4dbc1000 C:\Program Files\Common Files\System\Ole DB\OLEDB32R.DLL
VM Arguments:
jvm_args: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 5.5 -Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 5.5 -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\endorsed -Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 5.5\temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\logging.properties -Djava.library.path=C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\MMI\WEB-INF\lib vfprintf -Xms512m -Xmx1024m
java_command: <unknown>
Launcher Type: generic
Environment Variables:
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_07
[error occurred during error reporting (printing environment variables), id 0xc0000005]
--------------- S Y S T E M ---------------
OS: Windows Server 2003 family Build 3790 Service Pack 2
CPU:total 4 (4 cores per cpu, 1 threads per core) family 6 model 7 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3
Memory: 4k page, physical 2097151k(2097151k free), swap 4194303k(4194303k free)
vm_info: Java HotSpot(TM) Client VM (10.0-b23) for windows-x86 JRE (1.6.0_07-b06), built on Jun 10 2008 01:14:11 by "java_re" with MS VC++ 7.1
time: Mon Dec 28 15:24:00 2009
elapsed time: 600 seconds -
An issue using the COM components supplied with SAP GUI 6.2 or 6.4
We are having an issue using the COM components supplied with SAP GUI 6.2 or 6.4. We used to have SAP 4.6c and now we have 5.0. When we were on 4.6c, we used these COM components to logon and execute RFC calls and we had much success. Now that we are on 5.0, we cant seem to instance any SAP functions that have something to do with SAP Workflow. We have experienced this problem when using VB6 or .NET, but our existing code that always worked is in VB 6.0.
SAP Components used:
o SAP Logon Control
o SAP Function Control
o Librfc32.dll
o Other supporting C DLLs and/or COM object supplied with the SAP GUI installation.
For example, if we want to call the RFC ARCHIV_CONNECTION_INSERT, this code fails in VB6 when the Set objworkflow = objFuncCtrl.Add(strFunction) line of code executes. Instead of returning an instance of the object ARCHIV_CONNECTION_INSERT function, no object is created. In 6.2, SAP raises no errors, but the object we are trying to create is still Nothing. If we use 6.4, SAP raises an error SAP data type not supported via a message box and then the object is still = Nothing. Interestingly enough, the 6.2 GUI COM controls dont display the error dialog. The message box that is shown comes from the SAP Function COM Object "SAP.Functions" (wdtfuncs.ocx).
Now, what is interesting is if we use the same code to call a standard function or custom function that doesnt have anything to do with SAP Workflow, then the code works fine. Again, all of our code used to work just fine on an SAP 4.6 system.
Here is the code that fails:
'SAP Logon control - object for creating connections to an SAP system
Dim objSAPLogonCtrl As Object
'SAP connection object
Dim objConnection As Object
'Object that will represent the SAP function called
Dim objSAP As Object
'SAP function control object - object factory for creating other SAP function objects
Dim objFuncCtrl As Object
'Create instance of an SAP logon conrol
Set objSAPLogonCtrl = CreateObject("SAP.Logoncontrol.1")
'Create a connection object
Set objConnection = objSAPLogonCtrl.NewConnection
'Define connecion parameters
objConnection.ApplicationServer = "sapvm"
objConnection.SystemNumber = "00"
objConnection.Client = "800"
objConnection.User = "iissap"
objConnection.Password = "tstadm"
objConnection.Language = "E"
objConnection.TraceLevel = 10
'call the logon method of the connection object
If objConnection.Logon(0, True) = False Then
MsgBox Error
Exit Sub
End If
'Create an instance of the SAP Function control object
Set objFuncCtrl = CreateObject("SAP.Functions")
'Set the function control connection object
Set objFuncCtrl.Connection = objConnection
'Function name to be generated and called
Dim strFunction As String
strFunction = <b>"ARCHIV_PROCESS_RFCINPUT"</b>
'Create an instance of the function defined in strFunction
Set objworkflow = objFuncCtrl.Add(strFunction)
If objworkflow Is Nothing Then
MsgBox "Could not create object " & strFunction
Else
MsgBox strFunction & " object created."
End If
If anyone has seen anything like this or has any ideas, please help!
Mike and Hameed
<b></b>Hi,
documentation on the Scripting API is available at ftp://ftp.sap.com/pub/sapgui/win/640/scripting/docs/
This API is a replacement of the existing, obsolete COM interfaces.
Best regards,
Christian -
Calling C++ DLL's Using JNI
I have a question.. I need to call few C++ DLL methods from java. So I planned use JNI to do that. The question is there any probable or known performance issues if tried to call DLL's from java application. And also I also appreciate If you can you please send me a link where I can find a sample code for running DLL's using Java application
Note: I know I dont have any control on performance issues with DLL'slook at http://staff.develop.com/halloway/code/jawin.html
-
Exception in calling methods on a com object using jcom
Hi All,
I am trying to conect to CognosUpfront thorugh there com interface using weblogic
jcom architecture.
Steps followed :
Generated java classes for corresponding com dll
Added it to classpath
Enable the jcom mode and native mode of server.
Register the server jvm for native mode using regjvm.
After following all these steps I am able to create the object of UpfrontSession
but I am not able to call any method on this.
Its giving me NullPointerException
Can someone help me to solve this problem...
Stacktrace is below
java.lang.NullPointerException
at bicognos.UpfrontSession.login(UpfrontSession.java:192)
at jsp_servlet._portlets._iframetest.__iframetest._jspService(iframeTest
.jsp:29)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:387)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:27)
at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilte
r.java:313)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:27)
at com.bea.wlw.netui.pageflow.PageFlowJspFilter.doFilter(PageFlowJspFilt
er.java:190)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:6316)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
Thanx and regards,
Manish RathikamranA wrote:
cout << "Part Number = " << part.getNumber() << endl;
This is exactly what Jace, http://jace.reyelts.com/jace, helps you do. Your code would look exactly like this:JNIEXPORT jobjectArray JNICALL Java_translate_CgmTranslation_createCGM
( JNIEnv *env, jobject thisobject, jobject jPart ) {
Part part( jPart );
cout << "Part Number = " << part.getNumber() << endl;
}The roughly equivalent bare-bones JNI would be:JNIEXPORT jobjectArray JNICALL Java_translate_CgmTranslation_createCGM
( JNIEnv *env, jobject thisobject, jobject jPart ) {
jclass partClass = env->GetObjectClass( jPart );
jmethodID partNumberMethod = env->GetMethodID( partClass, "getNumber", "()Ljava/lang/String;" );
if ( ! methodID ) {
cout << "Unable to locate the method ID for Part.getNumber()" << endl;
return;
jstring jPartNumberStr = static_cast<jstring>( env->CallObjectMethod( jPart, partNumberMethod ) );
if ( env->ExceptionOccurred() ) {
cout << "An exception occurred while calling Part.getNumber()" << endl;
return;
const char* partNumberStr = env->GetStringUTFChars( jPartNumberStr, NULL );
if ( ! partNumberStr ) {
cout << "A JNI failure occurred while trying to retrieve the contents of the part number string." << endl;
return;
cout << "Part Number = " << partNumberStr << endl;
env->ReleaseStringUTFChars( jPartNumberStr, partNumberStr );
}See any differences?
God bless,
-Toby Reyelts -
3 iphones in household.All use same apple ID.But all contacts get mixed between phones and facetime calls come in from other contacts.How can we change this so our phone information isn't visible to each other?
Use separate Apple IDs for each family member and use Family Sharing features of those things (if any) that you do want to share. https://www.apple.com/ios/whats-new/family-sharing/
-
Call to a C++ DLL, using JNI - C++ method has char*
I am trying to link into an existing C++ Dynamically Linked Library(DLL) using the Java Native Interface(JNI).
All goes fine, and the library loads into the current program, however when I try to call the function, it crashes. The function has char pointers, and I haven;t been able to get Java to simulate them. Is there a way?????
I have tried using and array of chars .....char[], and String, but no dice.
Any suggestions O'learned Java ones??It will be necessary for you to write a JNI adapter in C/C++ to accomplish this. Java character strings and arrays are very different from those of C/C++ and you'll have to use JNI functions to adapt.
Chuck -
Hi, this is amit from india. just started using iphone 4s. i am observing that when an incoming call comes, the phone smtimes shows two virtual buttons of red and green color so as to attend or reject the call. but smtimes it just shows green button with a slider to attend the call and there is no red button to reject the call. is it a bug or some setting?
Because it behaves differently depending on whether the phone is locked (in standby) or unlocked (in use) when the call comes in.
-
while using my iphone as an mp3 player, if a call comes in will the music be interrupted?
Yes, it is a phone first. The only way that would not happen is if you have the device in Airplane mode, which turns the phone portion off.
-
Hi
I�m developming a wrapper in C because I need to call C�methods of the scanner�drivers
but when I run the java�code (the java�code call a JNI function that call the scanner drivers in C)
I get the following error:
C:\Documents and Settings\yamilet\Mis documentos\pruebaJNI\Scanner\escaner>java
Scanner
Valor devuelto por la funcion Open: 0
# An unexpected error has been detected by HotSpot Virtual Machine:
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x02ca55ea, pid=2692, tid=4092
# Java VM: Java HotSpot(TM) Client VM (1.5.0_02-b09 mixed mode, sharing)
# Problematic frame:
# C [LS100.dll+0x55ea]
# An error report file with more information is saved as hs_err_pid2692.log
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
Anybody have any idea about this error?
Please help me
Thank for advanceThe problem occurs the same way with or without breakpoints (MessageBoxes) in my code. Without any message boxes in the application, the values sent are retrieved, processed and the result sent back by the native method before the error shows up. I even do a println in the Java code of the result sent back before the error shows up.
It appears that it is something about the creation of the COM component that is causing the JRE to fail. Interestingly, I have been running this appliction (same client code making use of COM components) for some time now using a C++ front end to pass the data with absolutely no problem. The only difference now is that I am using a Java front end and passing the data using JNI. As I wrote earlier, I have used the -Xcheck:jni option with no error reported. I have even use JRE 6 with the
-XX:-RelaxAccessControlCheck option. That does not help.
Maybe you are looking for
-
How do I minimise the file size of a photo?
I am trying to find a way to miimize the file size of a photo so I can use s a avicon. Does anyone know how to do this?
-
JMS Listener classpath and EAR files
I am trying to deploy our application using the EAR file format on Weblogic 6.0 sp2. In order to use JMS sessionPools, we call SessionPoolFactory.getServerSessionPool() API (which takes our JMS Message listener class name as a string), from our start
-
Camera is black-- unable to take any pictures. All phone content has been restored and still hasn't fixed the issue. HELP
-
Hexvalue to float value conversion
Hi Everyone, I have a hex value "40000000" which its value in float is supposed to be "2" in my xml file.When i do the conversion i get a different value.Can somebody help me figure this out.Thanks
-
Importing from Device (Nikon D300) Problem
With my Nikon D80, when I "Import from Device" I see thumbnails of all the photos (Nikon RAW .NEF files) available for import to Lightroom and can choose those I want to import. However, when doing the same procedure from my Nikon D300 I cannot see p