11g preview version 3: JNDI Lookup problem when calling PL/SQL webservice
Hi,
I am experiencing a problem when calling a PL/SQL Webservice from a BPEL flow.
When I am trying to test my BPEL flow from the SOA Console I get a "Error doing JNDI lookup on target jdbc/MyDBDS"
The composite application including the BPEL flow is deployed in one application. "CompositeApp" and the web service in another Application called
"WebServiceApp".
Both applications are deployed on the same built in OC4J Application Server
If I test the webservice in isolation from the SOA console it works. It also seems to be working if the webservice and the and the BPEL flow is in the same project.
If anyone has any ideas on this one I would be very greatful.
Thanks in advance
try creating the MyDBDS connection as an application resource in both applications.
Similar Messages
-
JNDI lookup problem in WAS 5.1
Hello all,
I have generated an EAR using XDoclet and MyEclipse. When I deploy this EAR on WAS 5.1, I get the following exception:
javax.naming.NameNotFoundException: Context: WarHog/nodes/WarHog/servers/server1, name: ejb/TEDIObjectManagerLocal: First component in name TEDIObjectManagerLocal not found. Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read(NotFoundHelper.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ibm.rmi.iiop.CDRInputStream.readBoxedIDLEntity(CDRInputStream.java:2112)
at com.ibm.rmi.iiop.CDRInputStream.readIDLValue(CDRInputStream.java:2177)
at com.ibm.rmi.iiop.CDRInputStream.fast_read_value(CDRInputStream.java:1734)
at com.ibm.rmi.io.IIOPInputStream.readValueType(IIOPInputStream.java:2085)
at com.ibm.rmi.io.IIOPInputStream.readObjectField(IIOPInputStream.java:2057)
at com.ibm.rmi.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1765)
at com.ibm.rmi.io.IIOPInputStream.inputObjectUsingClassDesc(IIOPInputStream.java:1348)
at com.ibm.rmi.io.IIOPInputStream.continueSimpleReadObject(IIOPInputStream.java:420)
at com.ibm.rmi.io.IIOPInputStream.simpleReadObjectLoop(IIOPInputStream.java:404)
at com.ibm.rmi.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:347)
at com.ibm.rmi.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:200)
at com.ibm.rmi.iiop.CDRInputStream.read_value(CDRInputStream.java:1367)
at com.ibm.rmi.util.ProxyUtil.copyObject(ProxyUtil.java:450)
at com.ibm.CORBA.iiop.UtilDelegateImpl.copyObject(UtilDelegateImpl.java:789)
at javax.rmi.CORBA.Util.copyObject(Util.java:333)
at com.wdc.tedi.interfaces._TransformationEngine_Stub.transform(_TransformationEngine_Stub.java:268)
at com.wdc.tedi.web.TestHarnessBean.translate(TestHarnessBean.java:42)
at com.wdc.tedi.web.TestHarnessBean.setDataBlob(TestHarnessBean.java:80)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)First of all, I don't really understand what the error means. Is it that the JNDI lookup failed when one of my beans tried to do a lookup on 'ejb/TEDIObjectManagerLocal'? I believe there's some configuration that went wrong (EJB reference binding or something) when I deployed the EAR. The reason I don't think it's a faulty code is because the EAR runs like a charm when I deploy it on Oracle 10g and Weblogic.
I am really stuck on this problem and shall appreciate any help that I can get. I can send the code, xdoclet tags and configuration if that might assist someone.
Thanks
-ybh6336Hello all,
I'm still stuck on this issue. Following are the entries related to my
application when I do a 'dumpNameSpace':
28 (top)/nodes/WarHog/servers/server1/ejb/tedi/TEDIObjectManager
28
com.wdc.tedi.interfaces._TEDIObjectManagerHome_Stub
29 (top)/nodes/WarHog/servers/server1/ejb/tedi/DSValueLookup
29
com.wdc.tedi.interfaces._DSValueLookupHome_Stub
30 (top)/nodes/WarHog/servers/server1/ejb/tedi/TransformationEngine
30
com.wdc.tedi.interfaces._TransformationEngineHome_StubObservations:
- I only see the namespace entries for my Session beans. There's one
entity bean also which does not show up.
- I don't see anything for the Local Home interfaces, it shows only the
Home interfaces.
As additional information, I'm looking up 'TEDIObjectManagerLocal'
using 'ejb/TEDIObjectManagerLocal'. I also tried using 'local:ejb/ejb/TEDIObjectManagerLocal' (as Karthyk suggested) and
'java:comp/env/ejb/TEDIObjectManagerLocal', but that does not work
either.
Also, the XDoclet tags that I use to generate the interfaces for
TEDIObjectManager bean are as follows:
/* @ejb.bean name="TEDIObjectManager"
* display-name="TEDIObjectManager"
* description="TEDIObjectManager"
* jndi-name="ejb/tedi/TEDIObjectManager"
* local-jndi-name="ejb/TEDIObjectManagerLocal"
* type="Stateless"
* view-type="both"
* @ejb.util generate="physical"
* @ejb.ejb-ref ejb-name="TEDIObject"
* view-type = "local"
* ref-name = "ejb/TEDIObjectLocal"
* @oc4j.bean jndi-name="ejb/tedi/TEDIObjectManager"
*/My ejb-jar.xml looks like following for that bean:
<session >
<description><![CDATA[TEDIObjectManager]]></description>
<display-name>TEDIObjectManager</display-name>
<ejb-name>TEDIObjectManager</ejb-name>
<home>com.wdc.tedi.interfaces.TEDIObjectManagerHome</home>
<remote>com.wdc.tedi.interfaces.TEDIObjectManager</remote>
<local-home>com.wdc.tedi.interfaces.TEDIObjectManagerLocalHome</local-home>
<local>com.wdc.tedi.interfaces.TEDIObjectManagerLocal</local>
<ejb-class>com.wdc.tedi.ejb.TEDIObjectManagerSession</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref >
<ejb-ref-name>ejb/TEDIObjectLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.wdc.tedi.interfaces.TEDIObjectLocalHome</local-home>
<local>com.wdc.tedi.interfaces.TEDIObjectLocal</local>
<ejb-link>TEDIObject</ejb-link>
</ejb-local-ref>
</session>AND following for the bean that is referencing it:
<session >
<description><![CDATA[TransformationEngine]]></description>
<display-name>TransformationEngine</display-name>
<ejb-name>TransformationEngine</ejb-name>
<home>com.wdc.tedi.interfaces.TransformationEngineHome</home>
<remote>com.wdc.tedi.interfaces.TransformationEngine</remote>
<local-home>com.wdc.tedi.interfaces.TransformationEngineLocalHome</local-home>
<local>com.wdc.tedi.interfaces.TransformationEngineLocal</local>
<ejb-class>com.wdc.tedi.ejb.TransformationEngineSession</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref >
<ejb-ref-name>ejb/TEDIObjectManagerLocal</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.wdc.tedi.interfaces.TEDIObjectManagerLocalHome</local-home>
<local>com.wdc.tedi.interfaces.TEDIObjectManagerLocal</local>
<ejb-link>TEDIObjectManager</ejb-link>
</ejb-local-ref>
</session>The entries in ibm-ejb-jar-bnd.xmi (generated using MyEclipse) are as
follows for the two beans:
<ejbBindings
xmi:id="Session_bnd_1"
jndiName="ejb/tedi/TransformationEngine">
<ejbRefBindings xmi:id="EJBRefBnd_1"
jndiName="ejb/TEDIObjectManagerLocal">
<bindingEjbRef href="META-INF/ejb-jar.xml#EJBLocalRef_1"/>
</ejbRefBindings>
<enterpriseBean
xmi:type="ejb:Session"
href="META-INF/ejb-jar.xml#Session_TransformationEngine" />
</ejbBindings>
<ejbBindings
xmi:id="Session_bnd_3"
jndiName="ejb/tedi/TEDIObjectManager">
<ejbRefBindings xmi:id="EJBRefBnd_2"
jndiName="ejb/TEDIObjectLocal">
<bindingEjbRef href="META-INF/ejb-jar.xml#EJBLocalRef_2"/>
</ejbRefBindings>
<enterpriseBean
xmi:type="ejb:Session"
href="META-INF/ejb-jar.xml#Session_TEDIObjectManager" />
</ejbBindings>I know I'm swamping the post with code, but please let me know if anyone finds something unusual.
NOTE: When deploying on WAS, in the 'Map EJB references to beans' step, I'm giving the following values for 'TransformationEngine' bean:
Reference binding: ejb/TEDIObjectManagerLocal
JNDI Name: ejb/tedi/TEDIObjectManager
There's one other similar binding that works for 'TEDIObjectManager'
bean:
Reference binding: ejb/TEDIObjectLocal
JNDI Name: ejb/TEDIObject
Everything in ejb-jar and ibm-ejb-jar-bnd.xmi look similar for this working bean, there is one difference though, I do the lookup on this one using 'java:comp/env/ejb/TEDIObjectLocal', but I've already tried that for the other one.
Really appreciate your time.
Thanks
-yogesh -
Revision: 4741
Author: [email protected]
Date: 2009-01-29 13:43:53 -0800 (Thu, 29 Jan 2009)
Log Message:
Fix to RTE problem when calling captureEndValues() without having first called captureStartValues(). outcome of a patch submission, although this fix is different than the one suggested in the patch.
QE Notes: None
Doc Notes: None
Bugs: patch sdk-17060, bug sdk-16452
Reviewer: Jason
tests: checkintests, Mustella: tests/Effects tests/ListDataEffects
Ticket Links:
http://bugs.adobe.com/jira/browse/sdk-17060
http://bugs.adobe.com/jira/browse/sdk-16452
Modified Paths:
flex/sdk/branches/3.x/frameworks/projects/framework/src/mx/effects/Effect.asLook for the "contact us" on the verizon pages. http://www22.verizon.com/content/contactus/
Almost all of the forums here are peer to peer. Some verizon admins will occasionaly step in and try to get you help. These admins are usually not able to solve problems for you themselves, but can sometimes give advise or get you in contact with someone who can. -
How can I get error message when calling pl/sql
Hi,
I call a pl/sql java wrapper generated by Rosetta.
public static void startWf(
OracleConnection _connection,
BigDecimal p_goal_header_id,
BigDecimal p_submiter_userid,
String p_commit,
String p_init_msg_list,
String [] x_return_status,
BigDecimal [] x_msg_count,
String [] x_msg_data
) throws SQLException
the pl/sql is written by the standard way of OAF backend,
PROCEDURE start_wf ( p_goal_header_id in number
,p_submiter_userid in number
,p_commit in varchar2 DEFAULT FND_API.G_TRUE
,p_init_msg_list in varchar2 DEFAULT FND_API.G_FALSE
,x_return_status out varchar2
,x_msg_count out number
,x_msg_data out varchar2);
when running this procedure in TOAD, in case of error, following script can print error message:
if l_return_status <> 'S' then
dbms_output.put_line('Result');
dbms_output.put_line('status: '||l_return_status);
dbms_output.put_line('error count: '||l_msg_count);
dbms_output.put_line('Loop Error');
dbms_output.put_line('Err: '||fnd_msg_pub.get(-1,p_encoded=>'F'));
for i in 2..l_msg_count loop
dbms_output.put_line('Err: '||fnd_msg_pub.get(p_encoded=>'F'));
end loop;
end if;
if l_return_status = 'S' then
dbms_output.put_line('Success');
end if;
end;
My question is when calling pl/sql java wrapper from Java, in case of Error, return_status="E", then in order to get exact error msg, is there any equivalent java method such as get error from pageContext or OADBTransaciton.. etc instead of calling again pl/sql fnd_msg_pub.get to get error msg?
thanks
LeiLei,
You can use
checkErrors(OADBTransaction pTx,
int pMessageCount,
String pReturnStatus,
String pMessageData)
method in OAExceptionUtils Class.For details look at javadoc of OAExceptionUtils Class.
--Mukul -
Hi All
Two separate webapps, have different names for Datasources, on the same host and port. Both application work fine independently.
When we deploy both applications on the same app server(websphere), whichever we executes first gets its datasource from JNDI lookup and works fine, but when we try second application it have problem in finding its data source from JNDI lookup. If we start this second application first, it will work fine, but now another will have the same problem in its JNDI lookup.
Any idea why.
Thanks
....RanvirHi All
Two separate webapps, have different names for
Datasources, on the same host and port. Both
application work fine independently.
When we deploy both applications on the same app
server(websphere), whichever we executes first gets
its datasource from JNDI lookup and works fine, but
when we try second application it have problem in
finding its data source from JNDI lookup. If we start
this second application first, it will work fine, but
now another will have the same problem in its JNDI
lookup.
Any idea why.
Thanks
....RanvirHi Ranvir,
Do you mean you try to reach the same datasource with different names or do you try to reach different datasources over the same port?
If you try the first issue you shouldn't get any trouble. At least it works fine with JBOSS for example.
But if you try to do the latter in my oppinion you don't have a JNDI problem but a problem with socket binding: the two different databases must be contacted over different ports.
What do WebSphere's logs tell?
Best regards
Andy -
Hi,
I have a client Java application accessing a session EJB in a remote JBoss J2EE server. I'm using JWS 1.2 to deploy my application but when I do a JNDI lookup to get access the the remote's object home interface I get this error:
"Need to specify class name in environment or system property, or as an applet parameter, or in an application resorce file: java.naming.factory.initial"
All the jar files are signed and the JNPL file contains <all-permissions/>. This is the code that triggers the exception
jndiContext = new InitialContext();
homeRMIReference = jndiContext.lookup(C_SERVICE_NAME);
Any help would be appreciated.
Thanks in advance,
RafaelHi,
I've finally found the origin of the problem.
1. JNDI uses a minimum set of properties during initialization phase:
java.naming.factory.initial
java.naming.factory.url.pkgs
java.naming.provider.url
Therefore these properties must be set in the <resource> topic of the JNLP file. The value of these properties is defined in the jndi.properties file that you can find in jbossjmx.ant.jar (within the jboss/client directory)
2. You have to add the JBoss files to your bundle. For doing so I've unjared all the .jar files within the jboss/client directory; afterwards I have jared them in a single file "jboss.jar" and I've signed the file. I've added jboss.jar to the <resource> tag within the JNLP file (Note that I've added all the jboss files just to do quick check but usually you will have to add only those files you need (it doesn't make sense to deploy all JBoss files in each client application)
I hope this helps,
Rafael -
JNDI Lookup Problem (General Problem)
hi all,
i am newbie on bea products, but i have some experience on java technologies, how i fount on bea documentations and forums many people has the same problem like this, can anybody help us (me)?
problem: how is it possible to write simple client for j2ee server application? i found some posts about jndi lookup, and fount about j2ee client, but is there any doc or example how to write this j2ee client ???
i worked with many application servers and i have no problem with them (JBoss, Sun App Server, IBM Websophere, Oracle AS etc.)
some people told about jndi tree on Web Logic Server Administration console , i found this tree i my session beans looks like :
Binding Name:
TimestenExampleTimestenExample_jarInsertSubscriberBean_InsertSubscriber
Class:
test.InsertSubscriberBean_o7jk9u_InsertSubscriberImpl_1000_WLStub
why is so strange name for class or binding name ????
my session bean name is : InsertSubscriber
and it's implementation : InsertSubscriberBean
how i can lookup from client ?????
can anybody show me code snippet ???
my client looks like :
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import org.hibernate.property.Dom4jAccessor.ElementGetter;
public class Client {
public static void main(String[] args) {
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://192.9.200.222:7001");
try {
ctx = new InitialContext(ht);
InsertSubscriber usagefasade = (InsertSubscriber) ctx
.lookup("java:comp/InsertSubscriber");
} catch (NamingException e) {
e.printStackTrace();
} finally {
try {
ctx.close();
} catch (Exception e) {
e.printStackTrace();
}can anybody show me what is there incorrect ????
oo yes and i have weblogic.jar file into my client classpath.Hi,
Your EJB client looks fine.
You should use the JNDI name of your ejb while doing the lookup. i.e :
InsertSubscriber usagefasade = (InsertSubscriber) ctx.lookup("..use JNDI name of EJB...");
You can use the JNDI name of the EJB that you see in the JNDI tree of weblogic. [don't use Binding Name or Class name]. you can also specify the JNDI name by "jndi-name" attribute in weblogic-ejb-jar.xml.
for more info:
http://e-docs.bea.com/wls/docs81/ejb/ejb11.html
Thanks,
Qumar Hussain -
JPA's EntityManagerFactory jndi lookup problem
Hi,
I need to do jndi lookup of EntityManagerFactory from DAO layer. I don't want to inject entitymanagerfactory in a session bean.
I am using weblogic 10.0 . I could do a jndi lookup for jboss and oracle servers but not for weblogic
I have tried below code which fails:
ic.lookup("java:comp/env/EJB30");
ic.lookup("java:comp/env/persistence/EJB30");
<?xml version="1.0" encoding="windows-1252" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="EJB30" >
<jta-data-source>
jdbc/empDS
</jta-data-source>
<class>
com.Department
</class>
<class>
com.Employee
</class>
</persistence-unit>
</persistence>
Error is:
javax.naming.NameNotFoundException: While trying to look up comp/env/EJB30 in /app/ejb/DeptEJB30.jar#empSessionEJBBean.; remaining name 'comp/env/EJB30'
Regards,
PrashantIn your EJB add the annotation @TransactionManagement(TransactionManagementType.BEAN)
You can use JTA UserTransaction to begin and end transactions, for example
UserTransaction userTransation = null;
Context context = null;
try {
context = new InitialContext();
userTransation = (UserTransaction) context.lookup("java:comp/UserTransaction");
} catch (NamingException e) {
e.printStackTrace();
entityManager = entityManagerFactory.createEntityManager();
userTransation.begin();
entityManager.find(Department.class, 10);
userTransation.commit(); -
unable to get data from database, but i created datasource
pls send one example
with clear stepsdid you add your datasource to the database adapters oc4j-ra.xml or the application servers data-sources.xml?
The jndi lookup for the datasource is carried out against the application servers list of datasources, so you need to add the entry to C:\OraBPELPM_1\integration\orabpel\system\appserver\oc4j\j2ee\home\config\data-sources.xml -
Registry's EnumKey Lookup Failing When Called By MSBuild?
A MS-DOS script executes the VBScript below and it works fine. However, when using a MS Build master deployment file which calls the aforementioned MS-DOS script, the 2nd location lookup ("SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\")
fails with a result code of 2. I have spent countless hours trying to figure out why the difference. Any ideas?
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & node & "/root/default:StdRegProv")
REM 1st location: "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
sBaseKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
iRC = oRegistry.EnumKey(HKLM, sBaseKey, arSubKeys)
If iRC <> 0 THEN
WScript.Echo "Registry lookup failed for " & sBaseKey
ELSE
For Each sKey In arSubKeys
iRC = oRegistry.GetStringValue(HKLM, sBaseKey & sKey, "DisplayName", sValue)
If sValue = Wscript.Arguments.Item(1) Then
oRegistry.GetStringValue HKLM, sBaseKey & sKey, "UninstallString", sValue
InstalledApplications = Replace(sValue, "/I{", "/X{")
IF LEN(InstalledApplications) > 0 THEN
InstalledApplications = InstalledApplications & " /qn /l*vx """ & sFile & ".Log""" & Chr(13) & Chr(10)
END IF
END IF
NEXT
END IF
REM 2nd location: "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\<GUID>\InstallProperties"
arProducts = NULL
sBaseKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\"
iRC = oRegistry.EnumKey(HKLM, sBaseKey, arProducts)
If iRC <> 0 THEN
WScript.Echo "Registry lookup failed for " & sBaseKey
ELSE
For Each guid In arProducts
sInnerKey = sBaseKey & guid & "\InstallProperties\"
iRC = oRegistry.GetStringValue(HKLM, sInnerKey, "DisplayName", sValue)
If sValue = Wscript.Arguments.Item(1) Then
oRegistry.GetStringValue HKLM, sInnerKey, "UninstallString", sValue
InstalledApplications = Replace(sValue, "/I{", "/X{")
IF LEN(InstalledApplications) > 0 THEN
InstalledApplications = InstalledApplications & " /qn /l*vx """ & sFile & ".Log""" & Chr(13) & Chr(10)
END IF
END IF
NEXT
InstalledApplications = InstalledApplications & "GOTO:EOF"
END IF
Shawn ([email protected])Or try sysnative:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx
Don't retire TechNet! -
(Don't give up yet - 13,225+ strong and growing)
But that is not a portable solution. it does not apply to 32 bit platforms and will only work from a 64 bit session when calling intp a 32 bit session.
If we are in a 32 bit session running VBScript then we cannot see the 64 bit registry without the help of WMI. The correct solution is to build in the correct environment. If you want to run in both environments then you will need to test the
32 bit version on a 32 bit system assuming the applications being enumerated use the same keys on both architectures.
¯\_(ツ)_/¯
This is correct. I totally forgot there are 32 bit and 64 bit versions of MSBuild. I made no changes except to execute the main deployment script with the 64 bit version of MS Build. Thank you for all of your help.
-Shawn
Shawn ([email protected]) -
Character conversion problems when calling FM via RFC from Unicode ECC 6.0?
Hi all,
I faced a Cyrillic character convertion problem while calling an RFC function from R/3 ECC 6.0 (initialized as Unicode system - c.p. 4103). My target system is R/3 4.6C with default c.p. 1500.
The parameter I used in my FM interface in target system is of type CHAR10 (single-byte, obviously).
I have defined rfc-connection (SM59) as an ABAP connection and further client/logon language/user/password are supplied.
The problem I faced is, that Cyrillic symbols are transferred as '#' in the target system ('#' is set as default symbol in RFC-destination definition in case character convertion error is met).
Checking convertions between c.p. 4103 and target c.p. 1500 in my source system using tools of transaction i18n shows no errors - means conversion passed O.K. It seems default character conversion executed by source system whithin the scope of RFC-destination definition is doing something wrong.
Further, I played with MDMP & Unicode settings whithin the RFC-destination definition with no successful result - perhaps due to lack of documentation for how to set and manage these parameters.
The question is: have someone any experience with any conversion between Unicode and non-Unicide systems via RFC-call (non-English target obligatory !!!), or can anyone share valuable information regarding this issue - what should be managed in the RFC-destination in order to get character conversion working? Is it acceptable to use any character parameter in the target function module interface at all?
Many thanks in advance.
Regards,
Ivaylo Mutafchiev
Senior SAP ABAP Consultanthey,
I had a similar experience. I was interfacing between 4.6 (RFC), PI and ECC 6.0 (ABAP Proxy). When data was passed from ECC to 4.6, RFC received them incorrectly. So i had to send trimmed strings from ECC and receive them as strings in RFC (esp for CURR and QUAN fields). Also the receiver communication channel in PI (between PI and RFC) had to be set as Non unicode. This helped a bit. But still I am getting 2 issues, truncation of values and some additional digits !! But the above changes resolved unwanted characters problem like "<" and "#". You can find a related post in my id. Hope this info helps.. -
Problem when calling a return type BOOLEAN SQL Function in a package
Hi All,
I am having problem when trying to call a SQL function in a package with return type BOOLEAN
The SQL function signature is as follows
CREATE OR REPLACE PACKAGE RMSOWNER.ORDER_ATTRIB_SQL ****
FUNCTION GET_PO_TYPE_DESC(O_error_message IN OUT VARCHAR2,
I_PO_TYPE IN VARCHAR2,
O_PO_TYPE_DESC IN OUT VARCHAR2)
RETURN BOOLEAN;
Following is my java code
+CallableStatement cs3 = conn.prepareCall("{?=call ORDER_ATTRIB_SQL.GET_PO_TYPE_DESC(?,?,?)}");+
+cs3.registerOutParameter(1, java.sql.Types.BOOLEAN);+
+cs3.registerOutParameter(2, java.sql.Types.VARCHAR);+
+cs3.registerOutParameter(4, java.sql.Types.VARCHAR);+
+cs3.setString(2, "");+
+cs3.setString(3, "ST");+
+cs3.setString(4, "");+
+ResultSet rs3 = cs3.executeQuery();+
I get the following exception, i tried changing the sql type(registerOutParameter) from boolean to bit but i still getting this exception.
But when i call any other functions with return type other than boolean they work perfectly fine.
Please can anyone help me fix this issue, i am not sure if its anything to do with vendor JDBC classes?
+java.sql.SQLException: ORA-06550: line 1, column 13:+
+PLS-00382: expression is of wrong type+
+ORA-06550: line 1, column 7:+
+PL/SQL: Statement ignored+
+ at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)+
+ at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)+
+ at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)+
+ at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)+
+ at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)+
+ at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954)+
+ at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)+
+ at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)+
+ at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422)+
+ at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4394)+
#####Hello People!
There is another workaround!!
See the example below:
private String callBooleanAPi(String tableName,String apikey,String dtInicio,String dtFim,String comando) throws SQLException {
CallableStatement cs = null;
String call = "";
String retorno = null;
try {
if(comando.equalsIgnoreCase("INSERT")){
call = "declare x BOOLEAN; y varchar2(2);begin x :=PKG.INSERT(?,?,?,?,?); if x then y := 'S'; else y :='N'; end if; ? := y;end;";
} else if(comando.equalsIgnoreCase("UPDATE")){
call = "declare x BOOLEAN; y varchar2(2);begin x := PKG.UPDATE(?,?,?,?,?); if x then y := 'S'; else y :='N'; end if; ? := y;end;";
} else if(comando.equalsIgnoreCase("DELETE")){
call = "declare x BOOLEAN; y varchar2(2);begin x := PKG.DELETE(?,?,?,?,?); if x then y := 'S'; else y :='N'; end if; ? := y;end;";
cs = conn.prepareCall(call);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat sdfToSqlDate = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date dataInicialVigencia =null;
java.util.Date dataFinalVigencia = null;
Date dtInicialFormatada =null;
Date dtFinalFormatada = null;
if(dtInicio != null && !dtInicio.equals("")){
dataInicialVigencia = sdf.parse(dtInicio);
dtInicio =sdfToSqlDate.format(dataInicialVigencia);
dtInicialFormatada = Date.valueOf(dtInicio);
if(dtFim != null && !dtFim.equals("")){
dataFinalVigencia = sdf.parse(dtFim);
dtFim =sdfToSqlDate.format(dataFinalVigencia);
dtFinalFormatada = Date.valueOf(dtFim);
cs.setString(1, tableName);
cs.setString(2, apikey);
cs.setDate(3, dtInicialFormatada );
cs.setDate(4, dtFinalFormatada );
cs.registerOutParameter(5, java.sql.Types.VARCHAR);
cs.registerOutParameter(6, java.sql.Types.VARCHAR );
cs.execute();
retorno = cs.getString(6);
System.out.println( cs.getString(5));
} catch(SQLException e){
throw new SQLException("An SQL error ocurred while calling the API COR_VIGENCIA: " + e);
} catch(Exception e){
Debug.logger.error( "Error calculating order: " + id, e );
} finally {
if (cs != null) {
cs.close();
cs = null;
return retorno;
As you can see the CallableStatement class acepts PL/SQl blocks.
Best Regards. -
JTextField update problem when called from PropertyChangeEvent
Hi,
I'm trying to create forms that can be dynamically loaded with Class.forname(formName).
Those forms should always inherit some methods that make it easy to pass data to
them and receive data from them. The idea is that the data comes from a table which
sends a hashmap (String column/JTextField-name + String Value pairs) with firePropertyChanged
as soon as a new row is seleceted. The JTextFields in the form are marked with setName("FieldName") that has to correspond to the name of the columns of the table.
My problem is that I can't update the fields in my form when I'm calling getRow(HashMap)
from within propertyChangeEvent but that's necessary to keep the forms flexible.
JTextFieldName.setText(newText) just won't work. But it works when I call getRow(HashMap)
from the constructor. SwingWorker and threads to update the form didn't help.
I don't need to call pack() / update() / repaint() on the JFrame, do I ??
update() / validate() / repaint() etc. didn't work on the JTextField themselves.
Below is the code for one of the test-forms (just a JPanel that is inserted in a frame)
with all of it's methods. Does anybody have a solution to this problem ??
Thanks for taking time for that !!
Benjamin
* testTable.java
* Created on 15. April 2004, 16:12
package viewcontrol.GUI;
* @author gerbarmb
import javax.swing.*;
import java.awt.*;
import java.beans.*;
import java.util.*;
public class testTable extends javax.swing.JPanel
implements
java.awt.event.KeyListener,
java.beans.PropertyChangeListener {
* public static void main(String[] argv) { testTable tt = new testTable();
* JFrame jf = new JFrame(); jf.setContentPane(tt); jf.setVisible(true); }
/** Creates new customizer testTable */
public testTable() {
initComponents();
HashMap hm = new HashMap();
* Only for debugging, to see that the method getRow() works when
* called from the constructor.
hm.put("ttext", "TEst");
this.getRow(hm);
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the FormEditor.
private void initComponents() {//GEN-BEGIN:initComponents
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
textIn = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
intIn = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
numIn = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
dateIn = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
dateTimeIn = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
jCheckBox1 = new javax.swing.JCheckBox();
keepValues = new javax.swing.JCheckBox();
jButton1 = new javax.swing.JButton();
setLayout(new java.awt.GridBagLayout());
jLabel1.setText("Text");
add(jLabel1, new java.awt.GridBagConstraints());
textIn.setName("ttext");
textIn.setPreferredSize(new java.awt.Dimension(100, 21));
textIn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textInActionPerformed(evt);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
add(textIn, gridBagConstraints);
jLabel2.setText("Integer");
add(jLabel2, new java.awt.GridBagConstraints());
intIn.setName("tint");
intIn.setPreferredSize(new java.awt.Dimension(50, 21));
add(intIn, new java.awt.GridBagConstraints());
jLabel3.setText("Number");
add(jLabel3, new java.awt.GridBagConstraints());
numIn.setName("tnum");
numIn.setPreferredSize(new java.awt.Dimension(50, 21));
add(numIn, new java.awt.GridBagConstraints());
jLabel4.setText("Date");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
add(jLabel4, gridBagConstraints);
dateIn.setName("tdate");
dateIn.setPreferredSize(new java.awt.Dimension(50, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
add(dateIn, gridBagConstraints);
jLabel5.setText("DateTime");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
add(jLabel5, gridBagConstraints);
dateTimeIn.setName("tidate");
dateTimeIn.setPreferredSize(new java.awt.Dimension(80, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 1;
add(dateTimeIn, gridBagConstraints);
jLabel6.setText("Bit");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 1;
add(jLabel6, gridBagConstraints);
jCheckBox1.setName("tbit");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 1;
add(jCheckBox1, gridBagConstraints);
keepValues.setText("keep values");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 7;
gridBagConstraints.gridy = 3;
add(keepValues, gridBagConstraints);
jButton1.setText("Send");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 7;
gridBagConstraints.gridy = 2;
add(jButton1, gridBagConstraints);
}//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
sendRow();
}//GEN-LAST:event_jButton1ActionPerformed
private boolean sendRow() {
java.util.HashMap hm = new java.util.HashMap();
Component[] cs = this.getComponents();
for (int i = 0; i < cs.length; i++) {
if (((Component) cs).getName() != null) {
if (cs[i] instanceof JCheckBox) {
String value = ((JCheckBox) cs[i]).isSelected() ? "1" : "0";
hm.put(cs[i].getName(), value);
} else if (cs[i] instanceof JCheckBox) {
hm.put(cs[i].getName(), ((JTextField) cs[i]).getText());
} // end for
firePropertyChange("rowChanged", null, hm);
return true;
private void getRow(java.util.HashMap hm) {
//if (! this.keepValues.isSelected()) {
Component[] cs = this.getComponents();
for (int i = 0; i < cs.length; i++) {
if (cs[i].getName() != null && hm.containsKey(cs[i].getName())) {
Component component = cs[i];
String componentName = cs[i].getName();
String componentValue = (String) hm.get(component.getName());
if (cs[i] instanceof JTextField) {
// output for debugging
System.out.println("Setting " + cs[i].getName() + " = "
+ componentValue);
((JTextField) component).setText(componentValue);
} else if (cs[i] instanceof JCheckBox) {
// output for debugging
System.out.println("JCheckBox found");
JCheckBox cb = (JCheckBox) component;
boolean selected = (componentValue == null ? false : (componentValue.equals("1")
? true
: false));
((JCheckBox) component).setSelected(selected);
} // end for
/* Uncomment this code snippet to retrieve the text that has been set
for the components (that means JTextFields)
This is just for debugging !
Component[] cs = this.getComponents(); for (int i = 0; i < cs.length;
i++) { if (cs[i].getName() != null) { if (cs[i] instanceof
JTextField) { System.out.println("Value of " +cs[i].getName() + " = " +
((JTextField) cs[i]).getText()); } } } // end for
private void textInActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textInActionPerformed
}//GEN-LAST:event_textInActionPerformed
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
sendRow();
public void keyReleased(java.awt.event.KeyEvent e) {
public void keyTyped(java.awt.event.KeyEvent e) {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("newRow")) {
final PropertyChangeEvent finalEvt = evt;
Runnable makeChanges = new Runnable () {
public void run() {
getRow((java.util.HashMap) finalEvt.getNewValue());
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField dateIn;
private javax.swing.JTextField dateTimeIn;
private javax.swing.JTextField intIn;
private javax.swing.JButton jButton1;
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JCheckBox keepValues;
private javax.swing.JTextField numIn;
private javax.swing.JTextField textIn;
// End of variables declaration//GEN-END:variablesThe problem of the change in the form not being comitted is that
I forgot SwingUtilities.invokeLater(makeChanges); in the bottom
part in public void propertyChange(java.beans.PropertyChangeEvent evt)
after having created a new Runnable.
Changes to the UI often have to be comitted by SwingUtitlities.invokeLater()
though I don't know that much about Swing yet.
Thanks to everybody who tried to solve that problem.
Benjamin -
Problem when calling BPEL process (WS) from APEX
I am trying to add a web service call to a BPEL process I have created (tried a few others aswell), but every time I try to add the WDSL file I get the following error:
*1 error has occurred*
The WSDL document contains multiple SOAP bindings. Application Express only supports WSDL's with one SOAP binding. Click Create Web Service Reference Manually to continue creating a reference for this service.
It is a simple BPEL process which works fine when called from the BPEL Console, however I have no success when calling it from APEX.
Am I doing something wrong, or is there a bug in BPEL/APEX?
Oracle BPEL Console v10.1.3.1.0
Apex: 3.2
The WDSL looks like this:
<definitions name="BPELProcess9" targetNamespace="http://xmlns.oracle.com/BPELProcess9">
−
<types>
−
<schema>
<import namespace="http://xmlns.oracle.com/BPELProcess9" schemaLocation="BPELProcess9.xsd"/>
</schema>
−
<schema>
<import namespace="http://schemas.xmlsoap.org/ws/2003/03/addressing" schemaLocation="http://xxx:8888/orabpel/xmllib/ws-addressing.xsd"/>
</schema>
</types>
−
<message name="BPELProcess9ResponseMessage">
<part name="payload" element="tns:BPELProcess9ProcessResponse"/>
</message>
−
<message name="BPELProcess9RequestMessage">
<part name="payload" element="tns:BPELProcess9ProcessRequest"/>
</message>
−
<message name="WSAReplyToHeader">
<part name="ReplyTo" element="wsa:ReplyTo"/>
</message>
−
<message name="WSARelatesToHeader">
<part name="RelatesTo" element="wsa:RelatesTo"/>
</message>
−
<message name="WSAMessageIDHeader">
<part name="MessageID" element="wsa:MessageID"/>
</message>
−
<portType name="BPELProcess9Callback">
−
<operation name="onResult">
<input message="tns:BPELProcess9ResponseMessage"/>
</operation>
</portType>
−
<portType name="BPELProcess9">
−
<operation name="initiate">
<input message="tns:BPELProcess9RequestMessage"/>
</operation>
</portType>
−
<binding name="BPELProcess9Binding" type="tns:BPELProcess9">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
−
<operation name="initiate">
<soap:operation style="document" soapAction="initiate"/>
−
<input>
<soap:header message="tns:WSAReplyToHeader" part="ReplyTo" use="literal" encodingStyle=""/>
<soap:header message="tns:WSAMessageIDHeader" part="MessageID" use="literal" encodingStyle=""/>
<soap:body use="literal"/>
</input>
</operation>
</binding>
−
<binding name="BPELProcess9CallbackBinding" type="tns:BPELProcess9Callback">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
−
<operation name="onResult">
<soap:operation style="document" soapAction="onResult"/>
−
<input>
<soap:header message="tns:WSARelatesToHeader" part="RelatesTo" use="literal" encodingStyle=""/>
<soap:body use="literal"/>
</input>
</operation>
</binding>
−
<service name="BPELProcess9">
−
<port name="BPELProcess9Port" binding="tns:BPELProcess9Binding">
<soap:address location="http://xxxx:8888/orabpel/default/BPELProcess9/1.1"/>
</port>
</service>
−
<service name="BPELProcess9CallbackService">
−
<port name="BPELProcess9CallbackPort" binding="tns:BPELProcess9CallbackBinding">
<soap:address location="http://set.by.caller"/>
</port>
</service>
−
<plnk:partnerLinkType name="BPELProcess9">
−
<plnk:role name="BPELProcess9Requester">
<plnk:portType name="tns:BPELProcess9Callback"/>
</plnk:role>
−
<plnk:role name="BPELProcess9Provider">
<plnk:portType name="tns:BPELProcess9"/>
</plnk:role>
</plnk:partnerLinkType>
</definitions>Allow me to reply to my own thread, for the benefit of any others who might want to invoke a BPEL WS from APEX facing the same problem:
Apex does not seem to like asynchronous BPEL processes so the trick is to make a synchronous BPEL process call the asynchronous BPEL process. -
hello,
I have a problem when Im trying to call the make method that in the Tree class.
Im calling it from the main method like you can see and It writes:
-Cannot make a static reference to the non-static method make() from the type Tree.
Can anyone help me please and tell me what is the problem?
Im using Eclipse 3.1.2
Thank you.
//import java.lang.Object;
//import java.lang.reflect.Array;
//structure of the node
class mainClass extends Tree {
public static void main(String args[]){
Tree.make();
//char temporary[]=new char[9];
//Tic_Tac_Toe pointersToNodes[]=new Tic_Tac_Toe[9];
//for(j=0;j<9;j++)
//temporary[j]='b';
public class Tic_Tac_Toe {
char currentCaseVector[]=new char[9];
Tic_Tac_Toe PointersToNodes[]=new Tic_Tac_Toe[9];
int evaluation;
//class that builds the game tree
class Tree {
public Tic_Tac_Toe T1=new Tic_Tac_Toe();
//char currentCaseVector[]=new char[9];
public char currentSign;
Tree(){
resetCurrentCaseArray(T1);
//T1.currentCaseVector.setSize(9);
//System.out.println(T1.currentCaseVector.elementAt(2));
void make(){
Tic_Tac_Toe T = new Tic_Tac_Toe();
int howMuchCloser,i;
Tree tree=new Tree();
for(i=0;i<9;i++)
T.currentCaseVector='b';
howMuchCloser=1;
for(i=0;i<9;i++){
T.PointersToNodes[findAvailablePlaceOnPointersToNodes(T)]=tree.buildNewTree(1,'o',T.currentCaseVector,howMuchCloser);
howMuchCloser++;
Tic_Tac_Toe buildNewTree(int i,char currentSign,char temp[],int howMuchCloser)throws ArrayIndexOutOfBoundsException{
int j=0;
//int howMuchCloser=1;
//for(j=i;j<9;j++){
Tic_Tac_Toe T1=new Tic_Tac_Toe();
currentSign=changeSign(currentSign);
resetCurrentCaseArray(T1);
//try{
setBoard(T1.currentCaseVector,temp,howMuchCloser,currentSign);
//catch(ArrayIndexOutOfBoundsException e){
//System.out.print("ArrayIndexOutOfBoundsException");
//System.out.println(i);
printTest(T1);
temp=T1.currentCaseVector;
howMuchCloser=1;
if((isFull(T1.currentCaseVector))==true)
return T1;
if(checkWin(T1)){
return T1;
//printTest(T1);
//break;
for(j=i;j<9;j++){
T1.PointersToNodes[findAvailablePlaceOnPointersToNodes(T1)]=buildNewTree(i+1,currentSign,temp,howMuchCloser);
howMuchCloser++;
//if(checkIfBlankEqualOne(T1.currentCaseVector)==false)
//howMuchCloser++;
//T1.PointersToNodes[findAvailablePlaceOnPointersToNodes(T1)]=buildNewTree(i+1,currentSign,temp);
return T1;
int findCloser(char charArray[],int howMuchCloser){
int i;
for(i=0;i<9;i++){
if (charArray[i]=='b'){
howMuchCloser--;
else
continue;
if (howMuchCloser==0)
break;
return i;
void setBoard(char current[],char previous[],int howMuchCloser,char iksOrCircle){
int i;
for(i=0;i<9;i++){
current[i]=previous[i];/******/
current[findCloser(current,howMuchCloser)]=iksOrCircle;
char changeSign(char sign){
if(sign=='x')
return 'o';
else
return 'x';
boolean isFull(char array[]){
int i;
for(i=0;i<9;i++){
if(array[i]=='b'){
return false;
return true;
void resetCurrentCaseArray(Tic_Tac_Toe T1){
for(int i=0;i<9;i++)
T1.currentCaseVector[i]='b';
boolean checkWin(Tic_Tac_Toe T1){
int count1=0;
int count2=0;
//checking columns
int i,j;
for(i=0;i<3;i++){
for(j=i;j<(i+7);j+=3){
if(T1.currentCaseVector[j]=='x')
count1++;
if(T1.currentCaseVector[j]=='o')
count2++;
if(count1==3)
return true;
if(count2==3)
return true;
count1=0;
count2=0;
//checking rows
for(i=0;i<7;i+=3){
for(j=i;j<(i+3);j++){
if(T1.currentCaseVector[j]=='x')
count1++;
if(T1.currentCaseVector[j]=='o')
count2++;
if(count1==3)
return true;
if(count2==3)
return true;
count1=0;
count2=0;
//checking diagonal
for(i=0;i<9;i+=4){
if(T1.currentCaseVector[i]=='x')
count1++;
if(T1.currentCaseVector[i]=='o')
count2++;
if(count1==3)
return true;
if(count2==3)
return true;
count1=0;
count2=0;
for(i=2;i<7;i+=2){
if(T1.currentCaseVector[i]=='x')
count1++;
if(T1.currentCaseVector[i]=='o')
count2++;
if(count1==3)
return true;
if(count2==3)
return true;
return false;
public int findAvailablePlaceOnPointersToNodes(Tic_Tac_Toe tic_tac_toe){
int i;
for(i=0;i<9;i++)
if(tic_tac_toe.PointersToNodes[i]==null)
return i;
return -1;
void printTest(Tic_Tac_Toe T1){
for(int i=0;i<9;i++)
System.out.println(T1.currentCaseVector[i]);
boolean checkIfBlankEqualOne(char array[]){
for(int i=0;i<9;i++){
if(i<8)
if(array[i]=='b')
return false;
if(array[8]=='b')
return true;
return false;
/*void makeFirst(char temporary[]){
for(int i=0;i<9;i++)
temporary[i]='b';I have two things in mind:
1. either modify the make() in class Tree as static
static void make() {//caution u may have to worry about instance variables referenced under this method2.
under your main static method, invoke it like this instead
mainClass mc=new mainClass();
mc.make();//not Tree.make();
Maybe you are looking for
-
Problem with select query (results cant b displayed)
SELECT url,SUM(data_received) xyz FROM logs GROUP BY url ORDER BY xyz desc when i triedthe above query in the worksheet it works fine but when i write same query in code i get this error. myjsp page has this code. <%while (rset.next()) out.println("<
-
Import Server not picking up the file
Hello, I have 2 repositories running on the same server. Import server picks up file for one repository, but not for the other. What could be the reason? Also, for the repository, import server not picking up the file, workflow also does not send an
-
How do I do a very short video on my Ipad Mini
How do I do a very short ( 2mins) video on my new iPad mini please
-
Best way to sort (short of dragging each one)
With so many apps, sorthing them into a working order one-by-one is a bear, especially across multiple pages - many times the app stops on a page and I can't get it to go to the next page, then apps get displaced and it causes changes on another page
-
JCO reading abap RAW data type (truncating?)
Does anyone have experience reading an Abap RAW data type using JCO? I am trying to read a GUID (via RFC_READ_TABLE) that is defined as RAW length 16. When I view this field in SAP GUI, I see 32 characters. However, when I read this field using JC