Select - Forte
We have just begun using SELECT ENTERPRISE to perform OO
modeling in conjuction with Forte development . We have not yet
reach the point of code generation but have heard through the
grapevine that there are problems with SELECT/FORTE in the original
generation of code and in the reverse engineering of tool code.
Would/Could anyone enlighten me with known problems ??
Karl Perna
[email protected]
Karl
We have been using SELECT and the Forté generator to aid our
development.
To be honest it has not proven very successful SELECT itself is fine and
a great aid to the development ( Enterprise 5.1) but the generator does
cause problems under certain conditions.
1. Configuration of the templates in SELECT is a must - you have to
enable the users generating the code access to most of the Forte
settings. E.g.. Without this when classes are renamed the generator will
create classes with the old name etc.
2. There is a bug in Forté apparently that only seems to be caused when
we generate classes from SELECT. The project that contains the classes
generated cannot be exported ( Ftexec error - GPF ).
3. We are using a Third party framework and all our business classes
inherit from a framework class which is fine until you try
roundtripping. The classes generated are changed in Forte to inherit
from the framework class. This causes the class to be reverse engineered
into SELECT and then generated as a forward declaration when the code is
again generated into Forte. Any new classes that are forward generated
subsequently cannot inherit from the framework class as Forte will not
allow inheritance from forward declared classes.
This last problem is overcome by the use of categories/packages in the
next version of SELECT - when SELECT will be able to generate true Pex
files and know about the relationship between categories thus removing
the need for forward declarations. We have just received the new beta
version of SELECT and the generator.
From: Karl Perna[SMTP:[email protected]]
Sent: 27 March 1997 23:02
To: 'ForteUsersML'
Subject: Select - Forte
We have just begun using SELECT ENTERPRISE to perform OO
modeling in conjuction with Forte development . We have not yet
reach the point of code generation but have heard through the
grapevine that there are problems with SELECT/FORTE in the original
generation of code and in the reverse engineering of tool code.
Would/Could anyone enlighten me with known problems ??
Karl Perna
[email protected]
Similar Messages
-
Hi Netters,
Has anybody developed a prototype of your application usnig Forte? If
so, I would like to know the goods and bads of selecting Forte to
develop the prototype.
We are debating between Forte and VB for our Prototype. We want to be
able to send a copy of the prototype on disk(s) to customers for them to
install it on their PC and run them.
Any suggestions will also be helpful.
Thanks
Venkat J Kodumudi
Lead Systems Engineer - PageNet
(972) 985-2451
Internet: [email protected]from below:
If a primary requirement of your prototype is the ability to ship the
prototype to customers for review, I would suggest that Forte is not your
best choice - your customers would need the Forte runtime environment to run
the application. There are alternatives however. Another alternative to get around this concern is an approach we've used for several
forte projects successfully. We make use of a very inexpensive Lotus ScreenCam
product which allows us to put an executable on the network for user browsing
when they have the chance. This executable is generated using Lotus ScreenCam
which captures basically a movie of whatever you want to run. For example, we
run the forte prototype, even use a microphone to narrate, and then stop it
and either send the executable or movie through the internet to people or
make it available to the audience by diskette or by placing it somewhere they
can access it from. Its a pretty nifty package which gives the user
speed up and slow down and replay options.
Secondarily, for thoise interested we have a White Paper on Prototyping
do's and don'ts that we have provided. Contact me if this word doc would be
of interest and I will uuencode and send it out.
Len
From: "ANDERSON Bruce (SHINET01) (MSMail)" <[email protected]>
We have just finished a Forte-based prototype, and the effort was a raging
success.
The purpose, goals, and expected benefits of a prototyping effort should
always drive selection of the development tool.
If you are planning to develop the final application in Forte, the answer is
YES! Develop your prototype in Forte. The lessons learned during that
first effort will be invaluable as you move into development of the final
system.
If you are using the prototype effort to compare the differences between
Forte and Visual Basic, the answer is yes again. Not only will you be able
to measure the differences in an application developed with the two tools,
but you will have a better understanding of the relative levels of effort,
quality, reusability, etc.
On the other hand if your intention is to whip up a flashy GUI to impress
your customers, Visual Basic may be the best choice. But remember that if
the final tool selection has not been made, using the wrong tool may lead to
unrealistic expectations (good and bad) in terms of price, performance,
extendibility, etc. You have to deliver on your promises.
If a primary requirement of your prototype is the ability to ship the
prototype to customers for review, I would suggest that Forte is not your
best choice - your customers would need the Forte runtime environment to run
the application. There are alternatives however. As we've done on our
project, you could invite your customers to your offices for a visit and
demonstrate the prototype for them on your equipment. This gives you an
opportunity to gauge their enthusiasm (or lack thereof) for your product, as
well as obtaining valuable feedback. Another alternative would be to take
the application on a "road show", demonstrating the prototype while visiting
your customers in their offices.
Bruce Anderson
Senior Systems Engineer
MCI Systemhouse
Forte First Strike Team
[email protected]
(310) 403-4997
From: Venkat Kodumudi[SMTP:[email protected]]
Sent: Wednesday, October 09, 1996 8:40 AM
To: 'Forte User Group'
Subject: Prototype using Forte
Hi Netters,
Has anybody developed a prototype of your application usnig Forte? If
so, I would like to know the goods and bads of selecting Forte to
develop the prototype.
We are debating between Forte and VB for our Prototype. We want to be
able to send a copy of the prototype on disk(s) to customers for them to
install it on their PC and run them.
Any suggestions will also be helpful.
Thanks
Venkat J Kodumudi
Lead Systems Engineer - PageNet
(972) 985-2451
Internet: [email protected] -
Help - Forte Can't Find the Browser
Help! I've installed Forte on Windows NT 4.0, it will compile and build successfully, but when I try to execute,I get the message
"Could not access the URL through the external browser". It also says that when I hit the "Web Browser" option in the Menu bar.
The log file follows, so you can see all my settings and stuff. Internet Explorer is my default browser.
Thanks! I'm stuck!
+++++++++
Log Session: Saturday, August 2, 2003 11:59:10 AM BST
System Info: Product Version = Forte for Java, CE v. 3.0 (Build 010925)
IDE Versioning = IDE/1 spec=1.2.2 impl=010925
Operating System = Windows NT version 4.0 running on x86
Java; VM; Vendor = 1.3.1_01; Java HotSpot(TM) Client VM 1.3.1_01; Sun Microsystems Inc.
Java Home = D:\JDK13~1.1_0\jre
System Locale = en_US (f4j_ce)
Home Dir; Current Dir = C:\WINNT\Profiles\Administrator; d:\forte4j\bin
IDE Install; User Dir = D:\forte4j; D:\WorkForte
CLASSPATH = D:\forte4j\lib\patches\openide-compat.jar;D:\forte4j\lib\locale\core_f4j.jar;D:\forte4j\lib\locale\core_f4j_ce.jar;D:\forte4j\lib\locale\core_f4j_ce_ja.jar;D:\forte4j\lib\locale\core_f4j_ja.jar;D:\forte4j\lib\locale\core_ja.jar;D:\forte4j\lib\locale\openide_f4j.jar;D:\forte4j\lib\locale\openide_ja.jar;D:\forte4j\lib\locale\updater_ja.jar;D:\forte4j\lib\core.jar;D:\forte4j\lib\openide-fs.jar;D:\forte4j\lib\openide-nodes.jar;D:\forte4j\lib\openide-util.jar;D:\forte4j\lib\openide.jar;D:\forte4j\lib\ext\locale\ddl_ja.jar;D:\forte4j\lib\ext\locale\logger_ja.jar;D:\forte4j\lib\ext\locale\rmi-ext_ja.jar;D:\forte4j\lib\ext\bsh-1_0-fj.jar;D:\forte4j\lib\ext\cmd.jar;D:\forte4j\lib\ext\cosnaming.jar;D:\forte4j\lib\ext\ddl.jar;D:\forte4j\lib\ext\fjscript.jar;D:\forte4j\lib\ext\flute.jar;D:\forte4j\lib\ext\fscontext.jar;D:\forte4j\lib\ext\idlcompilers.jar;D:\forte4j\lib\ext\jaas.jar;D:\forte4j\lib\ext\jaxp.jar;D:\forte4j\lib\ext\jh.jar;D:\forte4j\lib\ext\jndi.jar;D:\forte4j\lib\ext\ldap.jar;D:\forte4j\lib\ext\ldapbp.jar;D:\forte4j\lib\ext\logger.jar;D:\forte4j\lib\ext\nis.jar;D:\forte4j\lib\ext\openorb-1.0.2.jar;D:\forte4j\lib\ext\parser.jar;D:\forte4j\lib\ext\pbclient.jar;D:\forte4j\lib\ext\providerutil.jar;D:\forte4j\lib\ext\regexp.jar;D:\forte4j\lib\ext\rmi-ext.jar;D:\forte4j\lib\ext\rmiregistry.jar;D:\forte4j\lib\ext\sac.jar;D:\forte4j\lib\ext\sax2.jar;D:\forte4j\lib\ext\servlet.jar;D:\forte4j\lib\ext\xerces.jar;D:\forte4j\lib\ext\jdbc20x.zip;D:\JDK13~1.1_0\lib\dt.jar;D:\JDK13~1.1_0\lib\tools.jar
[INFO] Loaded modules: org.netbeans.core/1 (1.0.1/unspec); com.sun.ffj.modules.registration (1.0/010925); com.sun.forte4j.modules.dd/1 (1.0/010925); com.sun.forte4j.modules.pointbase/1 (1.2/010925); org.apache.tools.ant.module/2 (2.2.2/010925); org.netbeans.modules.autoupdate/1 (2.0.1/010925); org.netbeans.modules.clazz/1 (1.6.2/010925); org.netbeans.modules.db/1 (1.4/010925); com.sun.forte4j.modules.dbmodel.jdbcimpl/1 (1.2/010925); org.netbeans.modules.debugger.core/2 (2.0.2/010925); org.netbeans.modules.applet/1 (1.6.2/010925); org.netbeans.modules.debugger.debug/1 (1.8.2/010925); org.netbeans.modules.debugger.jpda/1 (1.8.2/010925); org.netbeans.modules.editor/1 (1.7.2/010925); org.netbeans.modules.corba.idl.editor/1 (1.2/010925); org.netbeans.modules.filecopy/1 (1.4/010925); org.netbeans.modules.html/1 (1.7.2/010925); org.netbeans.modules.httpserver/1 (1.6.2/010925); org.netbeans.modules.extbrowser/1 (0.2.2/010925); org.netbeans.modules.image/1 (1.6.2/010925); org.netbeans.modules.jarpackager/2 (1.6.2/010925); org.netbeans.modules.java/1 (1.6.2/010925); com.sun.forte4j.persistence.internal.ui/1 (1.2/010925); org.netbeans.modules.beans/1 (1.6.2/010925); org.netbeans.modules.corba/1 (1.4/010925); org.netbeans.modules.form/2 (1.6.2/010925); org.netbeans.modules.javadoc/1 (1.6.2/010925); org.netbeans.modules.jndi/1 (1.4.1/010925); org.netbeans.modules.logger/1 (1.2.1/010925); com.sun.forte4j.modules.depclass/1 (1.1/010925); org.netbeans.modules.objectbrowser/1 (1.6.2/010925); org.netbeans.modules.projects/1 (1.6.2/010925); org.netbeans.modules.properties/1 (1.6.2/010925); org.netbeans.modules.i18n/1 (1.7.1/010925); org.netbeans.modules.i18n.form/2 (1.7.1/010925); org.netbeans.modules.jdbc/1 (1.2/010925); org.netbeans.modules.properties.syntax/1 (1.6.2/010925); org.netbeans.modules.text/1 (1.6.2/010925); org.netbeans.modules.usersguide/1 (1.7.3/010925); org.netbeans.modules.xml/1 (1.5/010925); org.netbeans.modules.xml.editor.coloring/1 (1.2/010925); org.openidex.util/1 (1.7.1/010925); org.netbeans.modules.j2eeserver/1 (1.1.3/010925); org.netbeans.modules.utilities/1 (1.6.2/010925); com.sun.forte4j.j2ee.lib/1 (1.0/010925); org.netbeans.modules.apisupport.lite/1 (0.1.2/010925); org.netbeans.modules.rmi/1 (1.3.2/010925); org.netbeans.modules.vcscore/1 (1.4.1.1/010925); org.netbeans.modules.cvsclient/1 (1.3.2/010925); org.netbeans.modules.vcs.advanced/1 (1.4.1.1/010925); org.netbeans.modules.vcs.cmdline/1 (1.7.1.1/010925); org.netbeans.modules.web.core/1 (1.2.2/010925); org.netbeans.modules.web.core.syntax/1 (1.2.2/010925); org.netbeans.modules.web.ie/1 (1.4/010925); org.netbeans.modules.web.tomcat/1 (1.2.2/010925); com.iplanet.iws.integ.forte/1 (1.1/200108081113)
path="" :jsp: init
[IDE-Exec] Executing:
0 .= D:\JDK13~1.1_0\jre\..\bin\javac
1 .= -g
2 .= -encoding
3 .= UTF8
4 .= -classpath
5 .= D:\WorkForte\system;D:\forte4j\system;D:\forte4j\beans\TimerBean.jar;D:\WorkForte\jspwork\Tomcat+3.2\50439630;D:\WorkForte\CDShopcart;D:\WorkForte\CDShopcart\WEB-INF\lib\dbtags.jar;D:\WorkForte\CDShopcart\WEB-INF\lib\ietags.jar;D:\WorkForte\jspwork\Tomcat+3.2\6fad47ea;D:\WorkForte\CDShopcart\WEB-INF\classes;D:\forte4j\modules\ext\persistence-rt.jar;D:\forte4j\modules\ext\AbsoluteLayout.jar;D:\forte4j\modules\ext\sql.jar;D:\forte4j\modules\ext\rowset.jar;D:\forte4j\lib\ext\jdbc20x.zip;D:\forte4j\lib\ext\servlet.jar;D:\forte4j\lib\ext\xerces.jar;D:\forte4j\modules\ext\webserver.jar;D:\forte4j\modules\ext\jasper.jar;
6 .= D:\WorkForte\jspwork\Tomcat+3.2\6fad47ea\_0002fProductList_0002ejspProductList_jsp_1.java
[IDE-Exec] Executing:
0 .= D:\JDK13~1.1_0\jre\bin\java
1 .= -cp
2 .= D:\WorkForte\CDShopcart\WEB-INF\classes;D:\WorkForte\CDShopcart\WEB-INF\lib\dbtags.jar;D:\WorkForte\CDShopcart\WEB-INF\lib\ietags.jar;D:\WorkForte\CDShopcart;D:\WorkForte\CDShopcart\WEB-INF\classes;D:\WorkForte\CDShopcart\WEB-INF\lib\dbtags.jar;D:\WorkForte\CDShopcart\WEB-INF\lib\ietags.jar;D:\WorkForte\jspwork\Tomcat+3.2\50439630;D:\WorkForte\jspwork\Tomcat+3.2\6fad47ea;D:\WorkForte\system;D:\forte4j\beans\TimerBean.jar;D:\forte4j\lib\ext\jdbc20x.zip;D:\forte4j\lib\ext\servlet.jar;D:\forte4j\modules\ext\AbsoluteLayout.jar;D:\forte4j\modules\ext\persistence-rt.jar;D:\forte4j\modules\ext\rowset.jar;D:\forte4j\modules\ext\sql.jar;D:\forte4j\system;D:\forte4j\lib\locale\core_f4j.jar;D:\forte4j\lib\locale\core_f4j_ce.jar;D:\forte4j\lib\locale\core_f4j_ce_ja.jar;D:\forte4j\lib\locale\core_f4j_ja.jar;D:\forte4j\lib\locale\core_ja.jar;D:\forte4j\lib\locale\openide_f4j.jar;D:\forte4j\lib\locale\openide_ja.jar;D:\forte4j\lib\locale\updater_ja.jar;D:\forte4j\lib\core.jar;D:\forte4j\lib\openide-fs.jar;D:\forte4j\lib\openide-nodes.jar;D:\forte4j\lib\openide-util.jar;D:\forte4j\lib\openide.jar;D:\forte4j\lib\ext\locale\ddl_ja.jar;D:\forte4j\lib\ext\locale\logger_ja.jar;D:\forte4j\lib\ext\locale\rmi-ext_ja.jar;D:\forte4j\lib\ext\bsh-1_0-fj.jar;D:\forte4j\lib\ext\cmd.jar;D:\forte4j\lib\ext\cosnaming.jar;D:\forte4j\lib\ext\ddl.jar;D:\forte4j\lib\ext\fjscript.jar;D:\forte4j\lib\ext\flute.jar;D:\forte4j\lib\ext\fscontext.jar;D:\forte4j\lib\ext\idlcompilers.jar;D:\forte4j\lib\ext\jaas.jar;D:\forte4j\lib\ext\jaxp.jar;D:\forte4j\lib\ext\jh.jar;D:\forte4j\lib\ext\jndi.jar;D:\forte4j\lib\ext\ldap.jar;D:\forte4j\lib\ext\ldapbp.jar;D:\forte4j\lib\ext\logger.jar;D:\forte4j\lib\ext\nis.jar;D:\forte4j\lib\ext\openorb-1.0.2.jar;D:\forte4j\lib\ext\parser.jar;D:\forte4j\lib\ext\pbclient.jar;D:\forte4j\lib\ext\providerutil.jar;D:\forte4j\lib\ext\regexp.jar;D:\forte4j\lib\ext\rmi-ext.jar;D:\forte4j\lib\ext\rmiregistry.jar;D:\forte4j\lib\ext\sac.jar;D:\forte4j\lib\ext\sax2.jar;D:\forte4j\lib\ext\servlet.jar;D:\forte4j\lib\ext\xerces.jar;D:\forte4j\lib\ext\jdbc20x.zip;D:\JDK13~1.1_0\lib\dt.jar;D:\JDK13~1.1_0\lib\tools.jar;D:\forte4j\modules\registration.jar;D:\forte4j\modules\dd2beans.jar;D:\forte4j\modules\pointbase.jar;D:\forte4j\modules\ant.jar;D:\forte4j\modules\ext\ant-optional.jar;D:\forte4j\modules\docs\ant-manual.zip;D:\forte4j\modules\ext\ant.jar;D:\forte4j\modules\autoupdate.jar;D:\forte4j\modules\clazz.jar;D:\forte4j\modules\db.jar;D:\forte4j\modules\dbschema.jar;D:\forte4j\modules\debuggerCore.jar;D:\forte4j\modules\applet.jar;D:\forte4j\modules\toolsDebugger.jar;D:\forte4j\modules\jpdaDebugger.jar;D:\forte4j\modules\editor.jar;D:\forte4j\modules\ext\nb-editor.jar;D:\forte4j\modules\idl-syntax.jar;D:\forte4j\modules\filecopy.jar;D:\forte4j\modules\ext\ftpclient.jar;D:\forte4j\modules\html.jar;D:\forte4j\modules\httpserver.jar;D:\forte4j\modules\ext\webserver.jar;D:\forte4j\modules\extbrowser.jar;D:\forte4j\modules\image.jar;D:\forte4j\modules\jarpackager.jar;D:\forte4j\modules\java.jar;D:\forte4j\modules\ext\javac.jar;D:\forte4j\modules\ext\java-gj.jar;D:\forte4j\modules\persistence-ui.jar;D:\forte4j\modules\ext\persistence-rt.jar;D:\forte4j\modules\beans.jar;D:\forte4j\modules\corba.jar;D:\forte4j\modules\form.jar;D:\forte4j\modules\ext\AbsoluteLayout.jar;D:\forte4j\modules\javadoc.jar;D:\forte4j\modules\jndi.jar;D:\forte4j\modules\loggerModule.jar;D:\forte4j\modules\classfile.jar;D:\forte4j\modules\browser.jar;D:\forte4j\modules\ext\infobus.jar;D:\forte4j\modules\projects.jar;D:\forte4j\modules\properties.jar;D:\forte4j\modules\i18n.jar;D:\forte4j\modules\i18n-form.jar;D:\forte4j\modules\jdbc.jar;D:\forte4j\modules\ext\rowset.jar;D:\forte4j\modules\ext\sql.jar;D:\forte4j\modules\properties-syntax.jar;D:\forte4j\modules\text.jar;D:\forte4j\modules\usersguide.jar;D:\forte4j\modules\xml.jar;D:\forte4j\modules\xml-syntax.jar;D:\forte4j\modules\openidex.jar;D:\forte4j\modules\j2eeserver.jar;D:\forte4j\modules\utilities.jar;D:\forte4j\modules\locale\utilities_f4j.jar;D:\forte4j\modules\j2eelib.jar;D:\forte4j\modules\apisupport-lite.jar;D:\forte4j\modules\rmi.jar;D:\forte4j\modules\vcscore.jar;D:\forte4j\modules\javacvs.jar;D:\forte4j\modules\ext\cvslib.jar;D:\forte4j\modules\vcsgen.jar;D:\forte4j\modules\cvs.jar;D:\forte4j\modules\jsp.jar;D:\forte4j\modules\ext\jasper.jar;D:\forte4j\modules\jsp-syntax.jar;D:\forte4j\modules\jspie.jar;D:\forte4j\modules\jsp-tomcat.jar;D:\forte4j\modules\ext\tomcat-monitor.jar;D:\forte4j\modules\iplanet_wsae.jar
3 .= org.netbeans.modules.web.tomcat.WebAppMain
4 .= D:\WorkForte\system\tomcat\server.xml
5 .= D:\WorkForte\system\tomcat
*********** Exception occurred ************
Sat Aug 02 12:08:13 BST 2003: org.netbeans.modules.extbrowser.NbBrowserException: RegOpenKeyEx() failed.
Annotation: Could not access the URL through the external browser. Check the configuration in Tools | Options | Web Browsers.
org.netbeans.modules.extbrowser.NbBrowserException: RegOpenKeyEx() failed.
at org.netbeans.modules.extbrowser.NbDdeBrowserImpl.getBrowserPath(Native Method)
at org.netbeans.modules.extbrowser.NbDdeBrowserImpl.access$600(NbDdeBrowserImpl.java:39)
at org.netbeans.modules.extbrowser.NbDdeBrowserImpl$URLDisplayer.startBrowser(NbDdeBrowserImpl.java:364)
at org.netbeans.modules.extbrowser.NbDdeBrowserImpl$URLDisplayer.run(NbDdeBrowserImpl.java:275)
at java.lang.Thread.run(Thread.java:484)
at org.netbeans.modules.extbrowser.NbDdeBrowserImpl.setURL(NbDdeBrowserImpl.java:181)
[catch] at org.openide.awt.HtmlBrowser$1.run(HtmlBrowser.java:401)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:337)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
*********** Exception occurred ************
Sat Aug 02 12:08:49 BST 2003: java.lang.IllegalMonitorStateException: null
java.lang.IllegalMonitorStateException
at org.netbeans.core.execution.TaskThreadGroup.isProcessDead(TaskThreadGroup.java:111)
at org.netbeans.core.execution.TaskThreadGroup.waitFor(TaskThreadGroup.java:119)
at org.netbeans.core.execution.DefaultSysProcess.result(DefaultSysProcess.java:71)
[catch] at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:124)This happened to me also (I'm using Windows XP though). It's because Forte doesn't know how to communicate with Explorer through DDE (at least on some peoples' systems). You can tell Forte to launch the browser through the command line, and that should work. To do this, go to Tools, Options, IDE Configuration, System, System Settings and choose External Browser (Command Line) from the dropdown. Then go to IDE Configuration, Server and External Tools, Web Browsers, External Browser (Command Line) and under Browser Executable write C:\Program Files\Internet Explorer\iexplore.exe URL (of course, use the appropriate path to iexplore.exe if it's not the one above). Or, you could just select Forte's internal Swing-based browser under System Settings, but it doesn't have as many features as Internet Explorer.
-
Diffrence Between Forte 6 and earlier compilers
Hi,
I am working on Porting the Code from Earlier Versions to Forte 6.0. Can somebody please help me in understanding what are the exact differences, What things should be talken care of ?Hi There,
The best place to start is the C++ Migration Guide.
You can find from:
http://docs.sun.com/
-select Compiler and Programming
- select Forte Developer
- select Developer 6 Update 2
compiler Collection
- Select C++ Migration Guide.
I hope this will help.
....jagruti
Developers Technical Support
Sun Microsystems, http://www.sun.com/developers/support -
hi folks
i have created classes and i want to put in a package let say com.isis.graphics so i created 3 folders in order in the package name and i puted my classes in the folder graphics and in every class first line is package com.isis.graphics.and i typed in the Autoexec.bat the followoing line
set CLASSPATH=%CLASSPATH%;c:\com\isis\graphics the problem is when i'm trying to create a new class outside the package extending a class inside the package i get Compiler Error can any one till me why!? and How to det the CLASSPATH typed in the autoexec.bat in good way?
Please HelpThnx Guys
thnx Patrick
it worked in the case of using creating a class using
a text editor.but i meant that how can i use this
package from tool under windows like Forte or
JBuilder.i tried but the (Forte or JBuilder) issue an
Error that he doesn't know where is the package
com.isis.javaWith Forte you have to mount the directory or jar file. If you mount the root directory as has been suggested Forte will mount not only the directory /com/isis/java, but also all the other directories under /, which is not what you desire.
Since you're relatively new at this I assume you out of desparation 'un-jarred' the isis distribution into your file system. So the best thing to do with Forte is to MOUNT THE original isis JAR archive. In future do not unjar third party packages. They waste your disk space and cause you to lose your way in your own file system.
So for Forte you mount the jar file with the following menu selections: FORTE=>View=>Explorer=>...FileSystems=>MountJar.
MountJar will be in the LocalMenu of (right-click the mouse over the item ->) 'FileSystems'.
I am not looking at the JBuilder UI as I type so I cannot be explicit in my answer, but it has a more traditional menu facility for adding third-party libraries and archives. If you have your project already loaded, there should be a place where you can change its SETTINGS such as Debug CommandLine Options,SourcePath, ClassPath, Libraries and the like. Poke around and you will find the spot where you can add the isis jar file immediately after the Sun and Borland jar and zip files. If you have cleaned up the unjar directories, just create your own third-party directory where you plunk the isis jar file. Then update the Classpath to include that thrd party directory, and then finally add the isis librar jar file name into the extra library dialogue.
if u have a way to do this i'll be gratefull
and thnx anywayGood luck.
Malome -
C++ standard library
I'm looking for the C++ standard library. On linux machines it can be found under /usr/lib/.../libstdc++.a
I would really appreciate any help.
TIA
GevaHi There,
The C++ COmpiler includes a shared version of
the C++ Standrad library. It is called
libCstd.so.1.
It is in /usr/lib directory.
If you want to know more on C++ Standrad library, check out Chapter 13 of C++ User's Guide from
http://docs.sun.com and select Forte Developer 6 Update 2 compiler collection.
I hope this helps.
.....jagruti
Developers Technical Support
Sun Microsystems, http://www.sun.com/developers/support -
-lCrun -lCstd option with cc and ld issues
Hi every one,
I did a test which I use a C program client.c to call a C++ shared library libprintcpp.so. The shared lib compiled by:
CC -G -c -Kpic libprint.cpp
ld -b -G -B dynamic -lc -o libprintcpp.so libprint.o
When I use:
cc -o client client.c -L. -lprintcpp -lCstd -lCrun
The client runs fine. The result is:
From main
From printstring
But when I use:
cc -c client.c
ld -lc -o client client.o -L. -lprintcpp -L/opt/SUNWspro/lib -lCrun -L/opt/SUNWspro/WS6U1/lib -lCstd
The result is:
From main
From printstring
Segmentation Fault(coredump)
After ran the program, I got a coredump file. I used "truss" to track the program, here is the part of the result:
From main
write(1, " F r o m m a i n\n", 10) = 10
lseek(1, 0, SEEK_CUR) = 7926
From printstring
write(1, " F r o m p r i n t s t".., 17) = 17
lseek(1, 0, SEEK_CUR) = 8023
lseek(1, 0, SEEK_CUR) = 8055
write(1, "\n", 1) = 1
lseek(1, 0, SEEK_CUR) = 8113
Incurred fault #6, FLTBOUNDS %pc = 0x00000008
siginfo: SIGSEGV SEGV_MAPERR addr=0x00000008
Received signal #11, SIGSEGV [default]
siginfo: SIGSEGV SEGV_MAPERR addr=0x00000008
*** process killed ***
What was wrong? Did I missed some option in ld command? What do I need to do to use ld compile the program correctly?
I am using SUN 5.7, Sun WorkShop 6 update 1 C++ 5.2 Patch 109508-06 2001/11/07.
The source files:
/* libprint.h */
void printstring(char* str);
/* client.c */
#include "libprint.h"
#include <stdio.h>
void main()
printf("From main\n");
printstring("From printstring\n");
/* libprint.cpp */
#include <stdio.h>
#include <iostream.h>
// Thanks Josh for the extern "C"
extern "C"
void printstring(char* str)
cout << str << "\n";
Thanks again,
AndyHi There,
I think the reference to document will help
you more so I am giving you this link to
refer.
from http://docs.sun.com
- select Compilers and Programming Tools
- select Forte Developer 6 update 2 compiler collection
- select C++ User's Guide
and refer chapter 16 on Building Libraries.
This chapter describes different scenrio
for C and C++ and do's and don't.
....jagruti
Developers Technical Support
Sun Microsystems, http://www.sun.com/developers/support -
RE: (forte-users) dynamic select & maxrowsparameter
I thing this code should help:
** Accepts command string for dynamic query and **
** an empty array of BC to which the results **
** should be appended. Returns the filled BC **
** array. **
l_dynamicStatement : DBStatementHandle;
l_inputDescriptor : DBDataSet;
l_outputDescriptor : DBDataSet;
l_outputData : DBDataSet;
l_intStatementType : integer;
l_intRowType : integer;
l_intNumRows : integer;
l_intRowCount : integer = 0;
l_result : BusinessClass = new;
BEGIN
-- Prepare SQL statement for query given command string
l_dynamicStatement = self.GetDBSession().Prepare(
commandString = p_strSql,
inputDataSet = l_inputDescriptor,
cmdType = l_intStatementType);
-- Open Cursor
l_intRowType = GetDBSession().OpenCursor(
statementHandle = l_dynamicStatement,
inputDataSet = l_inputDescriptor,
resultDataSet = l_outputDescriptor);
-- Fetch first row
l_intNumrows = GetDBSession().FetchCursor(
statementHandle = l_dynamicStatement,
resultDataSet = l_outputData);
WHILE l_intNumRows > 0 DO -- If prev fetch returned a row
-- Increment count of rows fetched
l_intRowCount = l_intRowCount + 1;
-- Check for excessive number of rows retrieved
-- Then it checks if you want to throw a exception or
-- just exit and return the result set.
IF l_introwCount > p_intMaxRow THEN
IF p_bThrowExcept THEN
-- Shut the cursor down and remove prepared
statement
GetDBSession().CloseCursor(l_dynamicStatement);
GetDBSession().RemoveStatement(l_dynamicStatement);
// Raise exception
-- Have to put code
ELSE
EXIT;
END IF;
END IF;
-- Parse result from DBDataSet to subclass
-- of BusinessClass
l_result = parseResult(l_outputData);
// Add row to array
p_aryBC.AppendRow(l_result.Clone(deep=TRUE));
// Fetch next row
l_intNumrows = GetDBSession().FetchCursor(
statementHandle = l_dynamicStatement,
resultDataSet = l_outputData);
END WHILE;
-- Shut the cursor down and remove prepared statement
GetDBSession().CloseCursor(l_dynamicStatement);
GetDBSession().RemoveStatement(l_dynamicStatement);
EXCEPTION
when e: GenericException do
GetDBSession().CloseCursor(l_dynamicStatement);
GetDBSession().RemoveStatement(l_dynamicStatement);
raise e;
END;
return p_aryBC;
ka
Kamran Amin
Framework, Inc.
303 South Broadway
Tarrytown, NY 10591
(914) 631-2322x121
[email protected]
http://www.frameworkinc.com/
-----Original Message-----
From: Matthew Middleton [mailto:[email protected]]
Sent: Thursday, December 09, 1999 11:15 PM
To: Will Chris
Cc: [email protected]
Subject: RE: (forte-users) dynamic select & maxrows parameter
Think there's a mis-understanding. The maxrows I refer to is not SQL but a
forte method parameter as in the following:
dynStatement = self.DefaultDBSession.Prepare(commandString = sqlStatement
,inputDataSet = inputDescriptor
,cmdType = commandType);
rowType = self.DefaultDBSession.Select(statementHandle = dynStatement
,inputDataSet = inputDescriptor
,resultDataSet = outputDescriptor
,maxrows = 100);
the variable sqlStatement holds the "dynamic" select string.
If I don't set maxrows I get a runtime error, as mentioned, it is running
against Oracle.
At 14:47 10/12/99 +1100, you wrote:
We use Oracle and Rdb and we have dynamic and non-dynamic SQL. No
combination of
these demand a max rows clause.
For example the following query works on both databases :
lvLanguageCodesList : Array of LanguageCodes = new();
begin transaction
sql select Language_Code LanguageCode,
Language_Nm LanguageNm,
System_Control_YN SystemControlYN,
Other_Language_YN OtherLanguageYN
into :lvLanguageCodesList
from SRD_LANGUAGE_CODES
order by Language_Nm
on session StudentRegistryDBSession;
end transaction;
if lvLanguageCodesList.items = 0 then
return Nil;
else
return lvLanguageCodesList;
end if;
Indeed if we wanted to use max rows its a bit of a pain in the bum because
Oracle and
Rdb use different syntax to define the row limit. So our dynamic SQL
'builder class'
has to detect the database flavour and configure max rows accordingly(where
we want to use
it).
I can only guess that the error you are getting is not assoicated to therow
limit or is caused because of the database you are using ?
Regards,
Chris Will, Sydney, Australia
-----Original Message-----
From: Matthew Middleton [mailto:[email protected]]
Sent: Friday, 10 December 1999 14:33
To: [email protected]
Subject: (forte-users) dynamic select & maxrows parameter
the help for DBSession.Select method says that the maxrows
parameter is not
required. Leaving it out does not give a compile error.
However at runtime
an error is got saying maxrows must be > 0.
I am using a method that accepts a where clause as a
parameter and am not
really interested in what the number of rows will be.
Should I be?
Does anyone have any knowledge they can share on this one.
Thanks.
Regards,
Matthew Middleton Ph: +61 2 9239 4972
Oryx Software Consultant Fax: +61 2 9239 4900
Lawpoint Pty. Ltd. E-mail [email protected]
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe,
send in a new
email the word: 'Unsubscribe' to: [email protected]
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]
Regards,
Matthew Middleton Ph: +61 2 9239 4972
Oryx Software Consultant Fax: +61 2 9239 4900
Lawpoint Pty. Ltd. E-mail [email protected]
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]I thing this code should help:
** Accepts command string for dynamic query and **
** an empty array of BC to which the results **
** should be appended. Returns the filled BC **
** array. **
l_dynamicStatement : DBStatementHandle;
l_inputDescriptor : DBDataSet;
l_outputDescriptor : DBDataSet;
l_outputData : DBDataSet;
l_intStatementType : integer;
l_intRowType : integer;
l_intNumRows : integer;
l_intRowCount : integer = 0;
l_result : BusinessClass = new;
BEGIN
-- Prepare SQL statement for query given command string
l_dynamicStatement = self.GetDBSession().Prepare(
commandString = p_strSql,
inputDataSet = l_inputDescriptor,
cmdType = l_intStatementType);
-- Open Cursor
l_intRowType = GetDBSession().OpenCursor(
statementHandle = l_dynamicStatement,
inputDataSet = l_inputDescriptor,
resultDataSet = l_outputDescriptor);
-- Fetch first row
l_intNumrows = GetDBSession().FetchCursor(
statementHandle = l_dynamicStatement,
resultDataSet = l_outputData);
WHILE l_intNumRows > 0 DO -- If prev fetch returned a row
-- Increment count of rows fetched
l_intRowCount = l_intRowCount + 1;
-- Check for excessive number of rows retrieved
-- Then it checks if you want to throw a exception or
-- just exit and return the result set.
IF l_introwCount > p_intMaxRow THEN
IF p_bThrowExcept THEN
-- Shut the cursor down and remove prepared
statement
GetDBSession().CloseCursor(l_dynamicStatement);
GetDBSession().RemoveStatement(l_dynamicStatement);
// Raise exception
-- Have to put code
ELSE
EXIT;
END IF;
END IF;
-- Parse result from DBDataSet to subclass
-- of BusinessClass
l_result = parseResult(l_outputData);
// Add row to array
p_aryBC.AppendRow(l_result.Clone(deep=TRUE));
// Fetch next row
l_intNumrows = GetDBSession().FetchCursor(
statementHandle = l_dynamicStatement,
resultDataSet = l_outputData);
END WHILE;
-- Shut the cursor down and remove prepared statement
GetDBSession().CloseCursor(l_dynamicStatement);
GetDBSession().RemoveStatement(l_dynamicStatement);
EXCEPTION
when e: GenericException do
GetDBSession().CloseCursor(l_dynamicStatement);
GetDBSession().RemoveStatement(l_dynamicStatement);
raise e;
END;
return p_aryBC;
ka
Kamran Amin
Framework, Inc.
303 South Broadway
Tarrytown, NY 10591
(914) 631-2322x121
[email protected]
http://www.frameworkinc.com/
-----Original Message-----
From: Matthew Middleton [mailto:[email protected]]
Sent: Thursday, December 09, 1999 11:15 PM
To: Will Chris
Cc: [email protected]
Subject: RE: (forte-users) dynamic select & maxrows parameter
Think there's a mis-understanding. The maxrows I refer to is not SQL but a
forte method parameter as in the following:
dynStatement = self.DefaultDBSession.Prepare(commandString = sqlStatement
,inputDataSet = inputDescriptor
,cmdType = commandType);
rowType = self.DefaultDBSession.Select(statementHandle = dynStatement
,inputDataSet = inputDescriptor
,resultDataSet = outputDescriptor
,maxrows = 100);
the variable sqlStatement holds the "dynamic" select string.
If I don't set maxrows I get a runtime error, as mentioned, it is running
against Oracle.
At 14:47 10/12/99 +1100, you wrote:
We use Oracle and Rdb and we have dynamic and non-dynamic SQL. No
combination of
these demand a max rows clause.
For example the following query works on both databases :
lvLanguageCodesList : Array of LanguageCodes = new();
begin transaction
sql select Language_Code LanguageCode,
Language_Nm LanguageNm,
System_Control_YN SystemControlYN,
Other_Language_YN OtherLanguageYN
into :lvLanguageCodesList
from SRD_LANGUAGE_CODES
order by Language_Nm
on session StudentRegistryDBSession;
end transaction;
if lvLanguageCodesList.items = 0 then
return Nil;
else
return lvLanguageCodesList;
end if;
Indeed if we wanted to use max rows its a bit of a pain in the bum because
Oracle and
Rdb use different syntax to define the row limit. So our dynamic SQL
'builder class'
has to detect the database flavour and configure max rows accordingly(where
we want to use
it).
I can only guess that the error you are getting is not assoicated to therow
limit or is caused because of the database you are using ?
Regards,
Chris Will, Sydney, Australia
-----Original Message-----
From: Matthew Middleton [mailto:[email protected]]
Sent: Friday, 10 December 1999 14:33
To: [email protected]
Subject: (forte-users) dynamic select & maxrows parameter
the help for DBSession.Select method says that the maxrows
parameter is not
required. Leaving it out does not give a compile error.
However at runtime
an error is got saying maxrows must be > 0.
I am using a method that accepts a where clause as a
parameter and am not
really interested in what the number of rows will be.
Should I be?
Does anyone have any knowledge they can share on this one.
Thanks.
Regards,
Matthew Middleton Ph: +61 2 9239 4972
Oryx Software Consultant Fax: +61 2 9239 4900
Lawpoint Pty. Ltd. E-mail [email protected]
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe,
send in a new
email the word: 'Unsubscribe' to: [email protected]
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]
Regards,
Matthew Middleton Ph: +61 2 9239 4972
Oryx Software Consultant Fax: +61 2 9239 4900
Lawpoint Pty. Ltd. E-mail [email protected]
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected] -
Anyone using Select Enterprise for Forte?
Subject says it all. We're contemplating using eith Select or Rational
Rose.
Thanks in advance
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>Raymond captured my thoughts exactly. We were Select customers too and glad
to be Rational customers now.
-Martin
Raymond Blum <[email protected]> on 03/04/99 11:30:56 PM
Please respond to Raymond Blum <[email protected]>
Reom
To: [email protected], [email protected],
[email protected], [email protected]
cc:
Subject: RE: Anyone using Select Enterprise for Forte?
We were Select customers for a year and have switched to Rose. Select was
both a buggy tool and a buggier company! Their upgrade to V6 completely
changed the server requirements, pulling the rug out from under our feet.
Features we were promised were not in the releases we were sent...
Rose has been a godsend; the product has it's shortcomings but it is a level
above Select in both functionality & robustness.
The 3 times I've had to contact Rational tech support, they've been able to
provide me with a solution. Select's tech support were unable to get their own
product to work as advertised. ---Raymond
We have been using Select for over 2 years but have kept a watchful eye on
Rationals offering.
They seem to leap frog each other and have various pros and cons. My
personal bias is currently towards Rational Rose but you'll have to choose
based upon your own needs.
If you let me know what you need I can let you know what I think each tool
offers.
Cheers,
Jez
Jez Sygrove
Application Architect
PanCredit
PS* Standard disclaimer: The opinions I express are not necessarily those of
my employer.
From: Robinson, Richard[SMTP:[email protected]]
Reply To: Robinson, Richard
Sent: 03 March 1999 18:29
To: '[email protected]'
Subject: Anyone using Select Enterprise for Forte?
Subject says it all. We're contemplating using eith Select or RationalRose.
Thanks in advance-
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
Sent from my PalmPilot.
The best thing since the Mac Plus!
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/> -
RE: (forte-users) Reporting tools/components for ForteApplications?
Hi Robert,
A good place to start when it comes to reporting is Forte Consulting. They
have developed a tool called ReportKit, which is ActiveX integration with
Seagate Software's Crystal Reports tool. Crystal is not really a three-tier
tool (although, your Forte Consultant can probably set it up to mimic a
three-tier tool), but it is a quick, easy way to get quality reports from
your existing Forte applications. If you're interested, give your Forte
Sales Rep (or, better still, your Forte Regional Consulting Director) a
call. They can discuss pricing and scheduling. I've done several
integration projects with Crystal, and I highly recommend ReportKit for
small- to medium-sized reporting requirements. As for costs, I don't recall
how much CrystalReports runs, but I think there are developer licenses and
runtime licenses.
FYI, the actual integration of ReportKit is pretty quick. The more
time-consuming piece of any report tool integration is the design and
implementation of the reports to be used.
I hope this helps.
-Katie
Katie Tierney
Quality Management Analyst
Akili Systems Group
601 Jefferson, Suite 3975
Houston, Texas 77002
Office: (713) 655-1400
Cell: (409) 255-1643
"The bitterness of poor quality remains long after the sweetness of low
price is forgotten" --Larry Anderson
-----Original Message-----
From: Robert Brooke-N502365 [mailto:Robert.Brookeca.michelin.com]
Sent: Monday, February 14, 2000 8:17 AM
To: kamranaminyahoo.com
Subject: (forte-users) Reporting tools/components for Forte
Applications?
Hi all,
We are looking for what is currently in the marketplace to enhance the
reporting
capabilities of Forte. Ideally, we are looking for component libraries that
we
could import into our repository. Do these exist?
Currently, I have found six reporting tools that are out there. The
tools
are Actuate, Crystal Reports, Report Workshop from Indus Consultancy
Services, Brio Technologies (SQR) VisualBRIO, Visual CyberQuery from
Cyberscience Corp., and Beacon from Brahma Software Solutions FORTify
Components. Are there any others for Forte?
If anyone is currently using one of these Reporting Tools for Forte or
any
others, could you give me any indications as to the costs, training, type
of
application using the Reporting tool, would you recommend using the
product
again, does it use wrappering or API, or is it a component based tool, and
any
other relevant information on the product?
Thanks,
Robert Brooke
Application Developer
Michelin North America (Canada) Inc. CA0/CA1
PO Box 399
New Glasgow, Nova Scotia
B2H-3E6
Phone: (902) 753-1977
Fax: (902) 396-2180
Note: We are currently developing in Forte 3.0.L.2. However, we would
like
to select a reporting tool/component within the next month. We are in the
initial phases of our next project, an application to be developed
in-house.
Probably will have two databases, one for real-time data and another one
for
archived data. Probably will need reporting functionality and capabilities
for
both real-time data and archived data.
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.
This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.
The E-Mail System is to be used for business purposes only.
www.mimesweeper.com
For the archives, go to: http://lists.xpedior.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.comAt 09:33 AM 4/20/01, Rottier, Pascal wrote:
Forte 4GL is:
1) A language, TOOL (Compare to Java)
2) An IDE (Compare to e.g. JBuilder or FJCE)
3) A collaborative development environment, with central repository (Compare
to ????)
4) A distributed application server / object request broker (Compare to J2EE
servers and/or CORBA)Let's not forget WebEnterprise, Express, and especially Fusion.
I think, SUN is not al all interested in TOOL.If TOOL were just a language and had no market yet, you are probably
right. But, not only is TOOL the key to the Forte environment, but it has
an existing and profitable market. Sun still sells FORTRAN, after all, and
continues to put money into ADE development for all its language
products. The real kicker, though, is that I think iPlanet is very clear
that Fusion, now iIS, is a very key product for them. There may be those
who wish it were written in Java and who might lobby for doing a Java
version, but it was clear at the conference that the iPlanet management
recognize that Java just isn't up to the task at this point. It isn't as
if all the iPlanet tools are actually written in Java, after all.
They will only support them for as long as they need.Or, more likely, for as long as they make money.
Now, in response to Microsofts .NET stratagy. We have yet to see how
succesfull this will be, but I expect Microsoft to push this down the
throats of developers and companies quite succesfully.Like they did DCOM?
=========================================================================
Thomas Mercer-Hursh, Ph.D email: [email protected]
Computing Integrity, Inc. sales: 510-233-9329
550 Casey Drive - Cypress Point support: 510-233-9327
Point Richmond, CA 94801-3751 fax: 510-233-6950 -
Re: Write-through caching in Forte
Hello Mark,
Just one point more. May be you can add an Event Notifier to the lock
manager to send the new instance of Obj1 to the clients (here client2)
who use it in their cache.
Hope this helps.
Daniel Nguyen.
Mark S. Potts wrote:
>
Andrew
This is a mixture of a cache strategy and object locking. If I
understand what you have said I have some suggestions;
The cache should hold copies of the object and the object should be
returned to the client. The obect that is returned to the client should
be version stamped ( optimistic locking ).
A) Client1 request Obj1
B) Obj1 is instantiated from the persistent store
C) Obj1 is version stamped via a lock manager service.
D) Obj1 is placed in the cache and copy returned to Client1
Client1 can now work on Obj1
When Client2 selects Obj2 - the cache size being 1 - the Obj1 is
replaced with Obj2.
Obj2 is selected stamped and returned to the client as per the steps
above.
When Client 2 now selects Obj1, no longer in the cache, the same steps
need to be completed as above.
The cache now contains the same version of Obj1 as give to Client1.
Now the important part, becuase this is an optimistic locking strategy -
two clients can have different version of the same object, it is only
when the object is saved - returned to the persistent store, that the
version stamp need to be checked. Lets say Client 2 saves before client
1
A) Client2 initiates a save on Obj1
B) Obj1 checks the lock manger to see if anyone has saved a new version
of Obj1 since it was selected.
C) If there have been no saves of Obj1 since Obj1 was selected ie the
version of Obj1 selected does not conflict with the last version saved -
then save Obj1
D) Update the version stamp for Obj1 via the Lock manager
E) Update Obj1 in the cache.
When Client1 now tries to save the version of Obj1 a conflict will
result and an exception needs to be raised - and if necessary the new
version of Obj1, from the cache, returned to Client1.
The version control can be done more easily if you are prepared to do
the locking in the database - I do not recommend this for a number of
well documented reasons.
However if you choose this alternative instead of using a seperate Lock
manager you could simply time stamp the row in the database iether on
that table or a separate lock table and when saving the Obj1 check the
time stamp on the object against the time stamp on the row. If they are
the same save the object and update the time stamp to the current time (
granularity of time stamp determined by number of concurrent users and
usage patterns ). The time stamp on the row acts as the version stamp
for the object and is selected into the object as a private attribute at
time of selection.
Hope this is of some help.
Mark Potts
SCAFFOLDS Product Manager
Sage IT Partners
A) Client1 requests Obj1.
B) Obj1 is instantiated from a persistent store and placed in the cache
and a reference to Obj1 is
returned to Client1.
C) As part of the instantiation of Obj1 the object is version stamped
through a lock manager service.
C) Client1 modifies the state of Obj1 trough its reference.
D) Client2 requests Obj2.
E) Obj2 is de-serialized, placed in the cache, knocking out Obj1, and a
reference to Obj2 is returned to Client2.
F) Client2 requests Obj1. Since it is no longer in the cache, we either
need to de-serialize Obj1 from some persistent store, in which case we
now have two out of sync copies of Obj1, or we need to give Client2 the
reference to the Obj1 that Client1 has.
Faibishenko, Andrew wrote:
Has anyone out there been successful at implementing a cache which
maintains updateable objects.
Due to financial considerations, we cannot buy an off-the-shelf
framework.
What we are trying to build is some kind of object persistence
mechanism
and the cache would be a layer in that service.
Our big issue is maintaining consistency within the cache, for
multiple
clients performing updates to an object.
Example:
A) Client1 requests Obj1.
B) Obj1 is de-serialized, placed in the cache and a reference to Obj1
is
returned to Client1.
C) Client1 modifies the state of Obj1 trough its reference.
D) Client2 requests Obj2.
E) Obj2 is de-serialized, placed in the cache, knocking out Obj1, and
a
reference to Obj2 is returned to Client2.
F) Client2 requests Obj1. Since it is no longer in the cache, we
either
need to de-serialize Obj1 from some persistent store, in which case we
now have two out of sync copies of Obj1, or we need to give Client2
the
reference to the Obj1 that Client1 has.
Is this something we should ask Forte Consulting about?
-Andy
============================================
Andy Faibishenko (312)251-3267
Senior Consultant (800)462-6301
Metamor Technologies, Inc. [email protected]Hello Mark,
Just one point more. May be you can add an Event Notifier to the lock
manager to send the new instance of Obj1 to the clients (here client2)
who use it in their cache.
Hope this helps.
Daniel Nguyen.
Mark S. Potts wrote:
>
Andrew
This is a mixture of a cache strategy and object locking. If I
understand what you have said I have some suggestions;
The cache should hold copies of the object and the object should be
returned to the client. The obect that is returned to the client should
be version stamped ( optimistic locking ).
A) Client1 request Obj1
B) Obj1 is instantiated from the persistent store
C) Obj1 is version stamped via a lock manager service.
D) Obj1 is placed in the cache and copy returned to Client1
Client1 can now work on Obj1
When Client2 selects Obj2 - the cache size being 1 - the Obj1 is
replaced with Obj2.
Obj2 is selected stamped and returned to the client as per the steps
above.
When Client 2 now selects Obj1, no longer in the cache, the same steps
need to be completed as above.
The cache now contains the same version of Obj1 as give to Client1.
Now the important part, becuase this is an optimistic locking strategy -
two clients can have different version of the same object, it is only
when the object is saved - returned to the persistent store, that the
version stamp need to be checked. Lets say Client 2 saves before client
1
A) Client2 initiates a save on Obj1
B) Obj1 checks the lock manger to see if anyone has saved a new version
of Obj1 since it was selected.
C) If there have been no saves of Obj1 since Obj1 was selected ie the
version of Obj1 selected does not conflict with the last version saved -
then save Obj1
D) Update the version stamp for Obj1 via the Lock manager
E) Update Obj1 in the cache.
When Client1 now tries to save the version of Obj1 a conflict will
result and an exception needs to be raised - and if necessary the new
version of Obj1, from the cache, returned to Client1.
The version control can be done more easily if you are prepared to do
the locking in the database - I do not recommend this for a number of
well documented reasons.
However if you choose this alternative instead of using a seperate Lock
manager you could simply time stamp the row in the database iether on
that table or a separate lock table and when saving the Obj1 check the
time stamp on the object against the time stamp on the row. If they are
the same save the object and update the time stamp to the current time (
granularity of time stamp determined by number of concurrent users and
usage patterns ). The time stamp on the row acts as the version stamp
for the object and is selected into the object as a private attribute at
time of selection.
Hope this is of some help.
Mark Potts
SCAFFOLDS Product Manager
Sage IT Partners
A) Client1 requests Obj1.
B) Obj1 is instantiated from a persistent store and placed in the cache
and a reference to Obj1 is
returned to Client1.
C) As part of the instantiation of Obj1 the object is version stamped
through a lock manager service.
C) Client1 modifies the state of Obj1 trough its reference.
D) Client2 requests Obj2.
E) Obj2 is de-serialized, placed in the cache, knocking out Obj1, and a
reference to Obj2 is returned to Client2.
F) Client2 requests Obj1. Since it is no longer in the cache, we either
need to de-serialize Obj1 from some persistent store, in which case we
now have two out of sync copies of Obj1, or we need to give Client2 the
reference to the Obj1 that Client1 has.
Faibishenko, Andrew wrote:
Has anyone out there been successful at implementing a cache which
maintains updateable objects.
Due to financial considerations, we cannot buy an off-the-shelf
framework.
What we are trying to build is some kind of object persistence
mechanism
and the cache would be a layer in that service.
Our big issue is maintaining consistency within the cache, for
multiple
clients performing updates to an object.
Example:
A) Client1 requests Obj1.
B) Obj1 is de-serialized, placed in the cache and a reference to Obj1
is
returned to Client1.
C) Client1 modifies the state of Obj1 trough its reference.
D) Client2 requests Obj2.
E) Obj2 is de-serialized, placed in the cache, knocking out Obj1, and
a
reference to Obj2 is returned to Client2.
F) Client2 requests Obj1. Since it is no longer in the cache, we
either
need to de-serialize Obj1 from some persistent store, in which case we
now have two out of sync copies of Obj1, or we need to give Client2
the
reference to the Obj1 that Client1 has.
Is this something we should ask Forte Consulting about?
-Andy
============================================
Andy Faibishenko (312)251-3267
Senior Consultant (800)462-6301
Metamor Technologies, Inc. [email protected] -
RE: (forte-users) appdist copy from VMS to NT question...
Well, there are some graphic FTP clients for windows that allow
you to get files from FTP-servers using simple drag and drop.
Most of them even support the option of selecting a directory
and dragging it, with all its subdirectories, to your local drive
with a single mouse action.
The only problem might be with binary vs. text files. The appdist
directory has both filetypes. Getting text files as if they were
binary files may cause problems. Getting binary files as if they
were text certainly will cause problems. So, either get the
whole tree binary and hope for the best. Or get each file indi-
vidually and set the correct bin or asc setting. Or use a tool
that is smart enough to see if a file is binary or text and hope
it doesn't make any mistakes.
Pascal Rottier
STP - MSS Support & Coordination Group
Philip Morris Europe
e-mail: [email protected]
Phone: +49 (0)89-72472530
+++++++++++++++++++++++++++++++++++
Origin IT-services
Desktop Business Solutions Rotterdam
e-mail: [email protected]
Phone: +31 (0)10-2428100
+++++++++++++++++++++++++++++++++++
Don't meddle in the affairs of dragons
'cause you're crunchy and taste good with ketchup
-----Original Message-----
From: Haben, Dirk [SMTP:[email protected]]
Sent: Wednesday, December 08, 1999 6:32 AM
To: 'Soapbox Forte Users'
Subject: (forte-users) appdist copy from VMS to NT question ...
G'day Folxs
Does anyone here have a simple way to copy a whole appdist tree for myapp1
say from VMS to NT? I have created a new environment on a NT box and want
to
copy down all our application distributions.
eg:
On OpenVMS machine vmsbox1 the directory tree and files
vmsbox1::forte_root:[appdist.aenv_myapp_cl3...]*.*;
should go to NT machine ntbox1
[ntbox1] d:\temp\myapp\cl3\...
Even just to d:\temp\aenv_myapp_cl3\... will do.
ftp doesn't seem to do the trick here. Of cause I could write some routine
to put/get file by file - but before I do all that I thought I ask around
if
it's already been done.
Thanks,
Dirk
PS: Needless to say we still develop and makedist on VMS - for now (see
Bulletin 388)!
PPS: No I haven't forgotten about [appdist.aenv.myapp1]*.ace
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]Well, there are some graphic FTP clients for windows that allow
you to get files from FTP-servers using simple drag and drop.
Most of them even support the option of selecting a directory
and dragging it, with all its subdirectories, to your local drive
with a single mouse action.
The only problem might be with binary vs. text files. The appdist
directory has both filetypes. Getting text files as if they were
binary files may cause problems. Getting binary files as if they
were text certainly will cause problems. So, either get the
whole tree binary and hope for the best. Or get each file indi-
vidually and set the correct bin or asc setting. Or use a tool
that is smart enough to see if a file is binary or text and hope
it doesn't make any mistakes.
Pascal Rottier
STP - MSS Support & Coordination Group
Philip Morris Europe
e-mail: [email protected]
Phone: +49 (0)89-72472530
+++++++++++++++++++++++++++++++++++
Origin IT-services
Desktop Business Solutions Rotterdam
e-mail: [email protected]
Phone: +31 (0)10-2428100
+++++++++++++++++++++++++++++++++++
Don't meddle in the affairs of dragons
'cause you're crunchy and taste good with ketchup
-----Original Message-----
From: Haben, Dirk [SMTP:[email protected]]
Sent: Wednesday, December 08, 1999 6:32 AM
To: 'Soapbox Forte Users'
Subject: (forte-users) appdist copy from VMS to NT question ...
G'day Folxs
Does anyone here have a simple way to copy a whole appdist tree for myapp1
say from VMS to NT? I have created a new environment on a NT box and want
to
copy down all our application distributions.
eg:
On OpenVMS machine vmsbox1 the directory tree and files
vmsbox1::forte_root:[appdist.aenv_myapp_cl3...]*.*;
should go to NT machine ntbox1
[ntbox1] d:\temp\myapp\cl3\...
Even just to d:\temp\aenv_myapp_cl3\... will do.
ftp doesn't seem to do the trick here. Of cause I could write some routine
to put/get file by file - but before I do all that I thought I ask around
if
it's already been done.
Thanks,
Dirk
PS: Needless to say we still develop and makedist on VMS - for now (see
Bulletin 388)!
PPS: No I haven't forgotten about [appdist.aenv.myapp1]*.ace
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected] -
The Sun is down and I can't get Forte for Java (?)
What's up here. I REQUIRE the newest version of Forte for Java as an IDE for JDK 1.4. The version that I have currently is over a year old. Everytime I select it from the "Products & APIs", I get a message:
Portions of sun.com are temporarily undergoing maintenance.
How long is this going to last? It's been unavailable for the last 10 hours (from my standpoint) and my project is at a screeching halt because of it (and since Borland has decided to soak me dry if I want a 'good' version of JBuilder that supports 1.4).
Not only is the project being squeezed inbetween an old version of the JDK and a just-released version, which not only will require uninstallation of the old and installation of the new, but will hopefully not break the project, requiring code changes.
Robert TempletonOkay, I finally found it. Java.sun.com needs to update its product link to "SUN ONE" since it no longer goes by "Forte for Java". Talk about a lack of internal communication.
Robert Templeton -
I am building a radio list dynamically in TOOL code based upon certain
criteria. I can get the list built no problem. But, I want to "select" a
certain element based on an attribute I check on the object. So the element
I want to appear selected may be element 2 or element 5 or element x. Has
anyone ever done this? I can't seem to find anything in the Forte help that
will allow me to do this?? Any help would be greatly appreciated.
Thanks!!
Doug Scurr
HealthPartners
8100 34th Avenue South
Minneapolis, MN 55440-1309
(612)883-7317
[email protected] <[email protected]>Dale,
I knew it would be something easy!! I obviously can't read very well!!
Thanks for the help!!
Doug Scurr
HealthPartners
8100 34th Avenue South
Minneapolis, MN 55440-1309
(612)883-7317
[email protected] <[email protected]>
-----Original Message-----
From: Dale V. Georg [SMTP:[email protected]]
Sent: Tuesday, April 27, 1999 2:34 PM
To: [email protected]
Cc: [email protected]
Subject: Re: Dynamic RadioList selection
> [email protected] wrote:
>
> I am building a radio list dynamically in TOOL code based upon
certain
> criteria. I can get the list built no problem. But, I want to
"select" a
> certain element based on an attribute I check on the object. So
the element
> I want to appear selected may be element 2 or element 5 or element
x. Has
> anyone ever done this? I can't seem to find anything in the Forte
help that
> will allow me to do this?? Any help would be greatly appreciated.
> Thanks!!
This should be as simple as setting the IndexValue of the radio list
to
the item that you want to have selected. For example:
self.<theRadioList>.IndexValue = 2;
to select the second item. Make sure your window is already open
when
you do this, though. ie, make sure self.Open() has already been
called. The Open() method initializes a lot of the widget
information
on the window, and it may well set the index value of the radio list
back to 1.
Hope this helps,
Dale
===================================
Dale V. Georg
Senior Systems Analyst
Indus Consultancy Services
[email protected]
===================================
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/> -
Sun ONE Studio 4 aka Forte: How to set the output path for classes ?
Help !
Beginner's question:
Sun ONE Studio 4 aka Forte:
How to set the output path for classes ?
As default, the class files are created in the same directory as the
sources.
In opposite, both JBuilder and Together support that there is a tree
with the sources and another tree with the classes.
The first answer I got was "not possible with Forte, but just if you write your own "ANT Build script" !
a) Please point me to a ready-to-use ANT script for this purpose, if such is available
b) Is using ANT instead of the MAKE as comfortable ? Besides the separation of sourcecode and classes, I would like to keep everything else to be the same, i.e. I don�t want to edit the ANT file if I enlarge the project by directories or files.
Tia
Sincerely
RolfYou can set S1S's options to place newly created .class files in a specific location.
Identify the compiler that is being used - Open the S1S's Tools/Options window, expand Editing and select Java Sources. Note the Default Compiler value. (If it's one if the Ant options, you use Ant to specify this option, not S1S.)
Open the S1S's Tools/Options window, expand Building/Compiler Types and select the appropriate compiler.
The Properties tab of the compiler has the property Target, which sets the filesystem where the compiler output is directed. If you choose <not set>, the .class files are written to their source directory.
When you set the Target, your change affects all classes that use this compiler.
Very few options can't be set in S1S; the challenge is finding out where they're set!
Maybe you are looking for
-
Can't delete songs from iCloud
I recently deleted 100+ songs from my PC. When I went to sync my iphone, all of the songs remained on my phone. I also have itunes match, and wifi sync enabled on both devices. Still, all the songs remain on my phone. If I turn off itunes match on
-
How can I set iTunes to load "iTunes U = Name of University" at startup?
Is there a way thru preferences, plist, or app contents to make iTunes automatically load a specific URL when starting?
-
I am looking for a nice Alternative Rock sound comparable to the likes of Jimmy Eat World, saosin, etc... Looking for this sound in Logic pro and just need help. Any answers?
-
Hello, I need to replace the web badges for iweb. I need the "mwmac_white.tiff" and "mwmac.tiff icons. Is there a place on the apple site to recover or obtain these? Thanks
-
Rec_transactions_interface table troubleshooting
Hello we are having errored records processing_status_code = 'ERROR' or transaction_status_code = 'ERROR' from the previous months. 1--when we run this process next month, will we need to remove all previous months records from rcv_transactions_inte