Calling Java from Delphi
Can ActiveX bridge used for calling Java from Delphi?
Also trying to solve this problem, after creating the bean i packaged/registered it successfully, (tested the bean using beanbox, works perfectly) then tried calling it via createoleobject in delphi 7
(*Code Snip *)
Var
v : variant;
begin
try
v := createoleobject(Edit1.text); // my class name ie WorldPort.Bean (also tried WorldPort.Bean.1
except on e:exception do
showmessage(e.Message)
end;
end;
(*Code Snip*)
After this simple code failed i started backtracking , eventually after getting "Access Violation...etc in axbridge.dll" all the time. tried delphi "import activex control" got the same access violation.
Decided to test the example from http://java.sun.com/j2se/1.4.2/docs/guide/beans/axbridge/developerguide/examples.html........ they both crashed on execution (calc.exe and boundprop.exe).
After this failed I tested these example classes on another machine, both crashed again.....
Also tried this experiment in VC++ , after adding the class to the Toolbox , i try to drop it onto a form, once again access violation.**PS**
('You will need VC++ and the Microsoft SDK to build the dll, download c++beta for free from microsoft site it you need it')** and a simple cmd file todo the job would look something like this:
echo - ** Build Java ActiveX Bridge **
echo Make sure these folders exist in jre--> axbridge\lib and axbridge\bin
cd\SDK\jre\axbridge\bin
set path=%path%;C:\MSDN\Bin;C:\VisualC++\lib
echo path
javac WorldPort.java
jar cmf Manifest.txt WorldPort.jar WorldPort.class
"C:\SDK\bin\packager.exe" -clsid {162193C4-AD5C-4A06-9F88-A737AE9B43AD} -out "C:\SDK\jre\axbridge\bin" WorldPort.jar WorldPort-reg
*** After running this cmd you will find the dll in bin folder and the jar in lib folder..***
Must Read:http://java.sun.com/j2se/1.4.2/docs/guide/beans/axbridge/developerguide/index.html
Hope some of this helps , if you have successfully created / installed/ used a "JavaActiveX" in Delphi , i would really like to try replicate it on my machine..
Similar Messages
-
Calling Java from Delphi via JNI
Hi all. I've got a J2EE application, and I'm trying to write a Delphi client for the server. More specifics:
Server and test client running in Win2000 SP4.
Server running in JBoss (JUnit test cases have successfully connected to the server)
JDK 1.4
I'm using some Delphi files from JEDI which allow me to load/access a JVM via JNI. So far, I've been able to:
1) Create a Properties object.
2) Populate the Properties object with String values (making sure to use NewStringUTF to pass into the Properties method
3) Find my java client classes which facilitate opening a connection.
However, when I attempt to call the method on the object which actually creates the connection, I get an Exception.
My immediate question is how do I see what the Exception is? I have an Exception object, but ExceptionDescribe doesn't product anything, and I'm having trouble finding any details about the Exception (what type of exception, what the Message or Call Stack is). At the moment, something's wrong but I can't see what. And I'll have no chance of fixing it if I don't know what the problem is.
Thanks for any help,
EdI use some code for solving this task (in real project with Delphi 6.0 & Java 1.4.1).
May be, it will help.
procedure TJavaInterp.CheckJNIException(Message : string);
begin
if JNI_ExceptionCheck(JNIEnv) = JNI_TRUE then
begin
JNI_ExceptionDescribe(JNIEnv);
JNI_ExceptionClear(JNIEnv);
raise Exception.Create(Message);
end;
end;{ TJavaInterp.CheckJNIException }
procedure TJavaInterp.HandleException(excpt : jthrowable);
var
Msg: string;
ESyntax : Exception;
CauseName : WideString;
Tag : OleVariant;
begin
if JNI_IsInstanceOf(JNIEnv, excpt, FclsCommonSyntaxError) = JNI_TRUE then
begin
ESyntax := Self.BuildSyntaxException(excpt);
JNI_DeleteLocalRef(JNIEnv, excpt);
raise ESyntax;
end;
Msg := Self.GetMessage(excpt);
if JNI_IsInstanceOf(JNIEnv, excpt, FclsNPScriptRuntimeException) = JNI_TRUE then
begin
CauseName := Self.GetCauseName(excpt);
Tag := Self.GetTag(excpt);
JNI_DeleteLocalRef(JNIEnv, excpt);
raise NPScriptHelper.BuildNPScriptRuntimeException(Msg, CauseName, Tag);
end;
if JNI_IsInstanceOf(JNIEnv, excpt, FclsHaltException) = JNI_TRUE then
begin
JNI_DeleteLocalRef(JNIEnv, excpt);
raise Exception.Create(Msg);
end;
Msg := Self.ToString(excpt);
JNI_DeleteLocalRef(JNIEnv, excpt);
raise Exception.Create(Msg);
end;{ TJavaInterp.HandleException } -
Call RFC from DELPHI Windows Services Program
Hi all,
Are there any way to call RFC from DELPHI Windows Services Program?
Best regards.
Munur EBCIOGLUHi again Bhagat,
1. Yes, it's included on 7.4 ABAP Stack (SAP NetWeaver 7.4 SP8 - Optimized for SAP HANA, Cloud and Mobile - Service Release 2 available now!). In a recent customer, SAP licences GW by user but there are other license model like session licensing: https://store.sap.com/sap/cp/ui/resources/store/html/SolutionDetails.html?pid=0000009470&catID=&pcntry=US&sap-language=EN&_cp_id=id-1385059687642-0
2. You could install as an AddOn on your 7.3 system, there are many options depending on your desired infrastructure: SAP Gateway deployment options in a nutshell For example our customer have deployed Central Hub Gateway in a standalone stack ABAP to act as an standalone oData bridge between ABAP/nonAbap systems.
3. You could deploy SAPUI5 apps in 7.x, Java Web Servers or HTTP Web Servers. You must consider your SSO scenario:
- SSO Logon Tickets. You will need to configurate SSO Logon Tickets between SAP NW Portal & SAP NW Gateway & your backend (ECC, etc). In order to pass SAP session cookie you will need setup SAP Web Dispacther and access portal & gateway throught SAP WD with the same domain.
- SAML2 Tickets. This scenario lets you provide portal & gateway on different domains enabling SSO. You could configure SAP NW Portal as an Identity Provider and other systems must trust SAP Portal as IdP.
Cheers -
JCo connectivity is used to call RFCs from Java. can i call Java from abap?
thanks in advance.....
regards,
SundararamaprasadHi Sundar ,
This link will surely give u an idea about calling java fro ABAP using Jco.
http://www.thespot4sap.com/Articles/SAP_Netweaver_Java_Connector.asp
regards,
aravindh. -
Is it possible to call java from Sybase trigger ? If so can you please supply example or URL to one ? Alternative solution is to call shell script from sybase trigger (as app is based on Solaris).
Regards
MichalThank for your opinion, but what idea is better ?Doing things in the middle tier, where Java lives.
Ever heard of event-based trading systems?
pooling a table every 30 sec. ?. I need to implment
real-time system which process each trade from table
once it appears there.Sounds like you have it backwards - you're trying to drive Java from the database.
I think it'd be better to write that event-based system in Java and leave the database just for persistence.
GigaSpaces and their ilk are being used this way for highly transactional trading systems. Maybe you could see how they're doing it.
% -
Advantages and Disadvantages of calling java from PL/SQL
Hi,
I have one doubt. What are all the advantages and disadvantages of the calling java from PL/SQL?
In actual scenario the java program will be in the Application server side. It will do the operation and it will store the result in Data base. But in this case (calling java from PL/SQL), we are loading the java program in the Data base and it is doing the operations.
I have seen many posts are coming regarding loading jar files into the database. Actually the jar will deploy in to Application server. Is there any difference instead of keeping in the Application server side?
Then I have read,
advantages:
-> java having lot API's. so PL/SQL can use that API's.
-> if we can not do anything in PL/SQL. we can do it using this mtd(calling java from PL/SQL).
My questions:
-> could you explain what are all the things we can not do but we can do using "calling java from PL/SQL" method?
-> is there any other advantages?
Disadvantages:
-> the performance is very slow in calling java from PL/SQL.
My questions:
-> Then why others are loading java files and jar files into database?
-> is there any other disadvantages?
Could you explain about this one? It will be more helpful to others also…
Regards,
kkHi,
You can read the free first chapter of my book @ http://www.amazon.com/gp/product/1555583296/ (see details then Excerpt)
Kuassi http://db360.blogspot.com -
Problem calling java from vb via activex bridge
I am trying to call java from vb via ActiveX Bridge and I am running into problems. I would appreciate any help.
I am using Visual Basic 2010 express, and Java JDK 1.6.0_16. I have used the http://download.oracle.com/javase/1.4.2/docs/guide/beans/axbridge/developerguide/index.html page as a guideline. To try to make it work I took the following steps:
1. Wrote a very simple java class (below):
package xxx;
import java.io.Serializable;
public class axb implements Serializable {
public int get_axb_Handle() {
int Address = 12345678;
return Address;
2. After I compiled, and created the jar file. I built the dll using the following command:
"C:\Program Files\Java\jdk1.6.0_16\bin\packager" -out "C:\Program Files\Java\jdk1.6.0_16\jre\axbridge\bin" E:\axb\dist\axb.jar xxx.axb
3. I then registered using: regsvr32 axb.dll
4. In Visual Basic Express IDE I use Project -> Add Reference to add Iterop.axb (dump below), and axb namespace
5. In my basic code I use the following lines
Dim axb1 As axb.axb
axb1 = New axb.axb <== Crash here with AccessViolationException ( full exception below)
What am I missing? Any help would be greatly appreciated
Thanks
Iterop.axb partial dump
___[MOD] C:\Documents and Settings\Elie A. Cohen.USINC022\My Documents\Visual Studio 2010\Projects\Repo API Example\Repo API Example\obj\x86\Release\Interop.axb.dll
| M A N I F E S T
|___[NSP] axb
| |___[INT] axb.axb
| | | .class interface public abstract auto ansi import /*02000006*/
| | | implements axb.axbDispatch/*02000003*/
| | | implements axb.axbSource_Event/*02000005*/
| | | .custom /*0C000018:0A000001*/ instance void [mscorlib/*23000001*/]System.Runtime.InteropServices.GuidAttribute/*01000002*/::.ctor(string) /* 0A000001 */ = ( 01 00 24 34 45 36 44 30 44 41 38 2D 36 41 45 44 // ..$4E6D0DA8-6AED ...
| | | .custom /*0C000019:0A000007*/ instance void [mscorlib/*23000001*/]System.Runtime.InteropServices.CoClassAttribute/*01000009*/::.ctor(class [mscorlib/*23000001*/]System.Type/*01000007*/) /* 0A000007 */ = ( 01 00 0C 61 78 62 2E 61 78 62 43 6C 61 73 73 00 // ...axb.axbClass. ...
| |
| |___[CLS] axb.axbClass
| | | .class public auto ansi import /*02000004*/
| | | implements axb.axbDispatch/*02000003*/
| | | implements axb.axb/*02000006*/
| | | implements axb.axbSource_Event/*02000005*/
| | | .custom /*0C00000F:0A000008*/ instance void [mscorlib/*23000001*/]System.Runtime.InteropServices.ClassInterfaceAttribute/*0100000A*/::.ctor(int16) /* 0A000008 */ = ( 01 00 00 00 00 00 ) ...
| | | .custom /*0C000010:0A000009*/ instance void [mscorlib/*23000001*/]System.Runtime.InteropServices.ComSourceInterfacesAttribute/*0100000B*/::.ctor(string) /* 0A000009 */ = ( 01 00 0F 61 78 62 2E 61 78 62 53 6F 75 72 63 65 // ...axb.axbSource ...
| | | .custom /*0C000011:0A000001*/ instance void [mscorlib/*23000001*/]System.Runtime.InteropServices.GuidAttribute/*01000002*/::.ctor(string) /* 0A000001 */ = ( 01 00 24 43 44 42 46 36 42 33 33 2D 45 32 33 46 // ..$CDBF6B33-E23F ...
| | | .custom /*0C000012:0A000002*/ instance void [mscorlib/*23000001*/]System.Runtime.InteropServices.TypeLibTypeAttribute/*01000003*/::.ctor(int16) /* 0A000002 */ = ( 01 00 02 00 00 00 ) ...
| | |___[MET] method .ctor : void()
| | |___[MET] method equals : bool(object)
| | |___[MET] method getClass : object()
| | |___[MET] method get_axb_Handle : int32()
| | |___[MET] method hashCode : int32()
| | |___[MET] method notify : void()
| | |___[MET] method notifyAll : void()
| | |___[MET] method toString : string()
| | |___[MET] method wait : object(object,object)
AccessViolationException exception
System.AccessViolationException was unhandled
Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Source=mscorlib
StackTrace:
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at WindowsApplication1.Form1.getPatientHandle_Click(Object sender, EventArgs e) in C:\Documents and Settings\Elie A. Cohen.USINC022\my documents\visual studio 2010\Projects\Repo API Example\Repo API Example\Repo API Example.vb:line 13
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:In case you haven't figured it out already... Or if anyone else is curious... Or for myself when I get old and forgetful...
h2. Object Creation
For starters, when you create an ActiveX object from within VB, use:
Set myObject = CreateObject("JavaObject.Bean")When I refer to JavaObject.Bean, I'm meaning the full object name + ".Bean". So, in your case, you should use:
Set myObject = CreateObject("xxx.axb.Bean")h2. Location
The .dll file must be located in the JRE that is used at the time of calling. Meaning, the .dll file must be placed under <jre_home>\axbridge\bin and registered there.
In your case:
DLL:
C:\Program Files\Java\jre6\axbridge\bin
Jar:
C:\Program Files\Java\jre6\axbridge\libh4. A Note:
The only supported JRE is a 32bit version as far as I know with regards to the ActiveX bridge. Just like the packager.exe can only be found in the 32bit JDK.
h2. Methods
h3. Object Types
ActiveX Bridge does not support passing literals or arrays. However, it does support passing java's primitive data types as Objects.
Simply meaning:
h4. Invalid:
public int get_axb_Handle() {
int Address = 12345678;
return Address;
}h4. Valid:
public Integer get_axb_Handle() {
int Address = 12345678;
return Address;
}On a normal circumstance, there's little difference between the two methods. However, in the second example, the JVM does a typecast from a literal data type to a object data type, resulting in a valid object to pass through to Visual Basic. Now, obviously there are multiple ways to do a proper change, new Integer(int) for example. It doesn't matter to me. At the end of the day, you have to pass an object.
As a side note, the same idea applies when receiving data from Visual Basic.
h4. Invalid:
public void set_axb_Handle(int newHandle) {
int Address = newHandle;
}h4. Valid:
public void set_axb_Handle(Integer newHandle) {
int Address =newHandle; -
ResourceBundle throws MissingResourceException when calling Java from C
All,
Our code calls Java from C application.
The C code create JVM using JNI_CreateJavaVM. Due to internal design issues we don't
create the JVM with a "-classpath" option.
After creating the JVM, we create a ClassLoader (URLClassLoader), with a URL list as it's classpath.
The last step in the C code is to load a Java class using the C reference to URLClassLoader.loadClass
(I will refer to this class as classA), and than call one of it's static methods.
Please notice that classA is not instantiated, we call a static method.
At this point we are moving to the Java code...
In the Java static method we call ResourceBundle.getBundle("resources.messages"),
the result is ResourceBundle throws MissingResourceException.
- The JAR hosting "resources/messeges.properties" (refer as jarA) is include in the
ClassLoader URL paths we used for loading the Java class.
- Using a debugger we can see that ClassLoader.getSystemClassLoader() don't contain
jarA in it's URL list.
- Using the debugger we see that classA.class.getClassLoader() does contain
jarA in it's URL list.
After some investigation we see that ResourceBundle.getBundle calles to ResourceBundle.getLoader:
private static ClassLoader getLoader() {
Class[] stack = getClassContext();
/* Magic number 2 identifies our caller's caller */
Class c = stack[2];
ClassLoader cl = (c == null) ? null : c.getClassLoader();
if (cl == null) {
cl = ClassLoader.getSystemClassLoader();
return cl;
} getClassContext() - native method, this can explain the why the above work fine for Windows.
I suspect the problem raised in the above code. Since I couldn't get a debug
version of rt.jar for Solaris, I need some help.
Our environment is Solaris 8, Java 1.5.
Please note that the same code works fine on WindowsXP with the same Java version!
Thanks,
AviI was thinking JVM should the classpath when it is invoked. But obviously it is not and we need to assign the classpath ourselves when invoking from native side. Thanks for pointing that out. For other people's benefit the following is the code piece I for initializing JVM.
char* str1;
char* str2;
char* classpath;
str1 = "-Djava.class.path=";
str2 = std::getenv("CLASSPATH");
classpath = (char*)malloc(strlen(str1) + strlen(str2) + 1);
strcpy(classpath, str1);
strcat(classpath, str2);
if (str2 == NULL) {
printf("CLASSPATH environment variable is not defined.");
exit(1);
m_VmArgs.version = JNI_VERSION_1_4;
m_options[0].optionString= classpath;
m_VmArgs.options = m_options;
m_VmArgs.nOptions = 1;
m_VmArgs.ignoreUnrecognized = JNI_TRUE;
JNI_GetDefaultJavaVMInitArgs(&m_VmArgs);
/* Create the Java VM */
m_Res = JNI_CreateJavaVM(&m_Jvm, (void**)&m_Env, &m_VmArgs);
if (m_Res < 0) {
printf("Can't create JVM\n");
exit(1);
thanks,
chancellor -
Questions abt. calling Java from C
I have a java class that contains a method I need to make accessable to C functions. It looks something like this:
public class ExportName
private SomeObj theObj;
public ExportName(SomeObj theObj)
this.theObj = theObj;
} //end ExportName
public String getName()
return theObj.getName();
public native String getNameJNI();
}Using javah I have my ExportName.h, and I'm in the process of writing ExportName.c:
#include <stdio.h>
#include <jni.h>
#include "ExportName.h"
JNIEXPORT jstring JNICALL Java_ExportName_getNameJNI (JNIEnv *, jobject)
jclass cls = (*env)->GetObjectClass(env, obj);
jMethodID mid = (*env)->GetMethodID(env, cls, "getName", "()Ljava/lang/String");
if (mid == 0)
return;
} /* end if */
}I have 2 questions:
(1)At some point, I need to actually call the java method using
(*env)->Call<TYPE>Method(env, obj, mid);
What type should I use here (CallWhatMethod)?
(2)Also, I need to create genuine C wrappers for these methods. How do I hand off the jstring returned by this JNI C code to the ANSI C method that calls it? I know that there is a conversion along the lines of:
const char str = (env)->GetStringUTFChars(env, <<JSTRING HERE>>, 0);
Can I just put the call to the JNI method where the jstring variable name goes?
Any help would be appreciated. I have already read the Java tutorial on JNI, so please don't respond just to tell me to go there.
Thanks!If that is the case, then your starting point is not javah, but to investigate the invocation API, after which you will call java methods from C.
Well, the Invocation API is mostly orthogonal to whether you are calling Java from C or vice versa. The Invocation API is mostly about creating/destroying VMs. You can call Java methods from a flat C application or you can call Java methods from C from within Java native methods.
If you want to call Java from C, you need to use the methods you're using like GetMethodID, CallXXXMethod, etc...
In your particular example, if you wanted to call ExportName.getName(), you would use CallObjectMethod. You would cast the result to a jstring, and then use GetStringUTFChars, ReleaseStringUTFChars, etc...
God bless,
-Toby Reyelts
For a solution to all your JNI woes, check out Jace - http://jace.reyelts.com/jace -
Hi All,
I am trying to call java method from XSLT file. It works fine on stand alone when I use Simple Transformation java program for transformation, but the same code is throwing exception in weblogic application server.
Please help me on this issue.
Exception:
ERROR: The first argument to the non-static Java function 'getRev' is not a valid object reference.
FATAL ERROR: 'Could not compile stylesheet'
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:828)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:617)
at weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(ServerTransactionImpl.java:2737)
at weblogic.transaction.internal.ServerTransactionImpl.globalCommit(ServerTransactionImpl.java:2657)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:285)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:233)
at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(BaseRemoteObject.java:621)
at weblogic.ejb.container.internal.StatelessRemoteObject.postInvoke1(StatelessRemoteObject.java:60)
at weblogic.ejb.container.internal.BaseRemoteObject.postInvokeTxRetry(BaseRemoteObject.java:441)
at com.agile.pc.cmserver.change.ChangeSessionBean_3rbfzs_EOImpl.processWorkflowExtensions(ChangeSessionBean_3rbfzs_EOImpl.java:10838)
at com.agile.pc.cmserver.base.CMRouteSessionBean.changeStatus(CMRouteSessionBean.java:960)
at com.agile.pc.cmserver.base.CMRouteSessionBean.changeStatus(CMRouteSessionBean.java:898)
at com.agile.pc.cmserver.base.CMRouteSessionBean.changeStatus(CMRouteSessionBean.java:888)
at com.agile.pc.cmserver.change.ChangeSessionBean_3rbfzs_EOImpl.changeStatus(ChangeSessionBean_3rbfzs_EOImpl.java:12050)
at com.agile.ipa.pc.CMRoute.changeStatus(CMRoute.java:705)
at com.agile.ui.pcm.common.RouteHandler.changeStatus(RouteHandler.java:1747)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.agile.ui.web.action.ActionServlet.invokeMethod(ActionServlet.java:1067)
at com.agile.ui.web.action.ActionServlet.handleRequest(ActionServlet.java:672)
at com.agile.ui.web.action.ActionServlet.doPost(ActionServlet.java:309)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at com.agile.ui.pcm.common.filter.RemoteFSRequestFilter.doFilter(RemoteFSRequestFilter.java:148)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at com.agile.ui.web.filter.LoggingFilter.doFilter(LoggingFilter.java:108)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at com.agile.ui.pcm.common.filter.WebClientLog.doFilter(WebClientLog.java:78)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:21)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at com.agile.ui.pcm.common.filter.SSOTicketFilter.doFilter(SSOTicketFilter.java:89)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
XSLT sample code:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:pl="com.oracle.test.Sample" version="2.0">
<xsl:template match="/">
<xsl:variable name="rev" select="'02'" />
<xsl:variable name="msg" select="pl:getRev($rev)" />
<xsl:element name="result">
<xsl:value-of select="$msg" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Sample.java :
package com.oracle.test;
import java.io.*;
public class Sample {
public static String getRev(String rev) {
// some logic i am going include here
if (rev.equals("01")) {
return "valid one";
return "";
Thanks All,ERROR: The first argument to the non-static Java function 'getRev' is not a valid object reference.Because it results in this error rather than anything else, you have to verify (apart from typos) the actual files finally deployed to run that your method getRev is declared "static", and that the argument $rev is setup with select="'02'" and not select="02". (What you posted looks fine, just make sure it remains the same in those essential aspect.)
-
Hello,
I would like to integrate some scripting capability in my web application.
The main purpose is to cover the following scenario :
- I develop a web app with JSP technology, packaged in a MyAPP.WAR file containing my application and another file (MyCustomer.RAR?) containing installation specific informations. I want the MyApp.WAR to be the same for all my customers, just having the RAR file specific to each customer (installation).
- In this ressource file, there could be some scripting functions that will be called from my JSP Pages to change the default presentation with some customer particular informations.
Those informations would be extracted from my java data model. The purpose is to enable the customer to code some little script, and to avoid coding those in Java.
The question I have on that are :
1/ is it possible to call java instances from scripting language (I read on apache that the answer was yes for some of them), but I would like to know if javascript can do that.
2/ Can I recover the "result" of the script in JSP ?
An example :
1/ The class containing a marvellous property
class MyClass {
public String myProperty;
2/ The JSP page :
<stlLib:callScript(Customer.RAR, "ScriptToCall",anInstance) />
<stlLib:getResult ???>
3/ A user script (pseudo-code)
Customer 1 :
Function ScriptToCall(object) {
variable iwanttoshowsquareroot;
iwanttoshowsquareroot = squareroot(object.myProperty);
return iwanttoshowsquareroot ;
Customer 2 :
Function ScriptToCall(object) {
variable mychoiceisdifferent;
mychoiceisdifferent= object.myProperty / 2;
return mychoiceisdifferent;
According to what ScriptToCall looks like the result on page would be different
Thanks in advance for your advises
Olivier.1) The script will be running in the browser, not the server, yes? So in Netscape you can load Java objects via Javascript, but IE doesn't seem to support this. Although in either, you can call methods on an applet in the page. But you can't call a JS function from the Java code in the JSP page, since that is only executed on the server.
2) Only if the "result" is submitted back to the server. -
I have recently come across certain projects where Java has being used as an alternative for scripting purposes. What I am trying to say here is that making calls to java programs from csh scripts and these Java programs are merely doing trivial/sql tasks which could have very well been carried out in a scripting language itself. and then Java calling some scripts so ending up with a chain of Java calling scripts which call Java and so on.
It has been my understanding all along that such a design would not be something recommended, and there should be a separation of concerns and a clear demarcation between Java and the scripting code. What however I am struggling with is finding some articles or papers supporting this thought and I would greatly appreciate if some you have something you would like to share preferably an article, supporting or negating such a design.
Edited by: kilyas on Mar 25, 2010 2:52 PM>
Actually my original post was a reply to Saish. But thanks for the input. It's good to know that you extend TDD to scripting as well, but most of the scenarios I have come across thats not been the case. Whether thats the lack of test tools/libraries like JUnit or JMock for csh scripting or the user's frame of mind of getting things done, I am not sure.There's no need for such tools. Even in Java et al, test harnesses can be hand-whittled. JUnit is just Java code, after all. Test harnesses for scripts are no different. As an extremely basic example, you might a file that picks up everything from one directory, run a sed application against it, and dump the results in another directory. Writing tests for that is pretty easy; start with a couple of sample input files, and expected outs, apply your script, do a diff on the resut against the expected outs. Granted there isn't a nice UI to give you a green bar with shell scripts, but you can still get a list of pass/fail stats. Groovy scripts, of course, can be run in an actual JUnit runner.
If you're finding it too hard to test scripts, like perhaps there are too many different flows of execution through the script, it's worth considering whether the task-at-hand is really a scripting job at all. The sweet spot for scripts is gluing together the stuff that performs all the complex logic.
What are the best practices recommendations for such a scenario, I am sure there much be something about it or some pattern or anti pattern dealing with it and some review of such an implementation. Don't you think so?I hope so! I've been tasked with documenting a scripting standard written by another developer, finding references to cite and such-like. There do exist coding standards on the web for scripting, shouldn't be too hard to find something useful. As for reviews, I expect simple peer review by someone else who knows scripting is about as good as it's going to get.
I'd add that logging plays an important part in scripting, just as it does in your "real" code -
ClassDefNotFound error when calling Java from C++
Hi all,
I have a problem with calling my java from C++ through JNI.
I have set my CLASSPATH environment varible that include path to every libary that I need. My source is as follows:
#include <jni.h>
#include <stdio.h>
int main()
JNIEnv *env;
JavaVM *jvm;
JavaVMInitArgs vm_args;
jint res;
jclass cls;
jmethodID mid;
IMPORTANT: specify vm_args version # if you use JDK 1.1.2 and beyond
vm_args.version = JNI_VERSION_1_4;
vm_args.ignoreUnrecognized = JNI_TRUE;
JNI_GetDefaultJavaVMInitArgs(&vm_args);
/* Create the Java VM */
res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
if (res < 0) {
printf("Can't create JVM\n");
return 1;
cls = (env)->FindClass ("dds/test/comm/listeners/NACKListenerFrame");
if (cls == 0) {
printf("Can't find NACKListenerFrame Class\n");
return 1;
mid = (env)->GetStaticMethodID(cls, "start", "()V");
if (mid == 0) {
printf("Can't find NackListnerFrame.start \n");
return 1;
(env)->CallStaticVoidMethod((_jclass*)cls, (_jmethodID*)mid, NULL);
jthrowable e = (env)->ExceptionOccurred();
if (e) {
env->ExceptionDescribe();
env->ExceptionClear();
if ((jvm)->DestroyJavaVM() < 0) {
printf("Cannot destroy JVM./n");
return 0;
I deliberately left out the codebelow because I want the JVM I created to load Classes from the system's CLASSPATH variable as I have set path to every classes that I need, in that CLASSPATH variable.
JavaVMOption options[1];
options[0].optionString=
"-Djava.class.path=.;E:/DDSproject/DDSImplementation/classes";
vm_args.options = options;
vm_args.nOptions = 1;
But it seems like unless I specify CLASSPATH in my C++ source code the JVM could not find any classes.
I tried to put the "jvm.dll" path to the first one in the System's PATH variable. It does not work either...
Gurus Pls help!!!.. I don't know what to do... I don't wanna code my CLASSPATH in my c++ source code as above.
Thanks in advance,
chancellorI was thinking JVM should the classpath when it is invoked. But obviously it is not and we need to assign the classpath ourselves when invoking from native side. Thanks for pointing that out. For other people's benefit the following is the code piece I for initializing JVM.
char* str1;
char* str2;
char* classpath;
str1 = "-Djava.class.path=";
str2 = std::getenv("CLASSPATH");
classpath = (char*)malloc(strlen(str1) + strlen(str2) + 1);
strcpy(classpath, str1);
strcat(classpath, str2);
if (str2 == NULL) {
printf("CLASSPATH environment variable is not defined.");
exit(1);
m_VmArgs.version = JNI_VERSION_1_4;
m_options[0].optionString= classpath;
m_VmArgs.options = m_options;
m_VmArgs.nOptions = 1;
m_VmArgs.ignoreUnrecognized = JNI_TRUE;
JNI_GetDefaultJavaVMInitArgs(&m_VmArgs);
/* Create the Java VM */
m_Res = JNI_CreateJavaVM(&m_Jvm, (void**)&m_Env, &m_VmArgs);
if (m_Res < 0) {
printf("Can't create JVM\n");
exit(1);
thanks,
chancellor -
Hi,
Is WSIF still the best/recommend way to call java code from your BPEL? Or are we moving away from that kind of env. and should put a wrapper around the legacy java code and expose them as services?
Regards,
Muasirhi,
Java can't call BPEL directly. So you have following steps:
1. Create Web Service from existing java file(Some tools can generate Web Service from java class).
2. Generate the Service Proxy by using Web Service.
3. Invoke the Web Service through proxy.
4. If your application use the struts, you can invoke the process from struts action class, which is called from a web page.
Maybe it is useful for you! -
Advantages of calling java from PL/SQL
Hi experts,
Could any one tell me the advantages of calling java program from PL/SQL?
Regards,
karthiHi,
You can read the free first chapter of my book @ http://www.amazon.com/gp/product/1555583296/ (see details then Excerpt)
Kuassi http://db360.blogspot.com
Maybe you are looking for
-
I will be watching something and get a black screen. I open a new page and I get a black screen that never opens into the page. These problems only started with my recent update. I can refresh and it doesn't seem to do anything - HELP! The other weir
-
NGL revaluation FX on specific ledger with defined G/L accounts
Hi all I try to set up for our different associated companies in different countries a FX revaluation. We are using three parallel ledgers for our enterprise and associated companies. The leading one is for our group. The non leading ledger are meant
-
Master Data load duplicated records - 0ART_SALES_ATTR
Hi All, I'm trying to load Master Data in the Test System and I'm getting an error that says that There are duplicates of the data record 70114 with the key '10 30 000000000001034170 ' for characteristic 0MAT_SALES . This is wrong, no data is duplica
-
Error in View configuration "Define an assignment set in the runtime rep.."
I have enhanced a standard component u2018BP_HEADu2019 and have enhanced the view u2018BP_HEAD_OVERVIEWu2019 in it to work on the configuration. But when I go to the configuration tab it says, "Define an assignment set in the runtime repository" and
-
Publishing BW 3.5 to EP 7.0 (2004s) as iView
Hello all, We are looking into integrating BW 3.5 into our Enterprise Portal as iViews (no Information Broadcasting). I have the following questions: 1) Do we need to perform the same integration steps (portal and BW certificate exchanges? SSO? etc.)