Scalability with Collections-API and transactions
I'm using the BerkeleyDB such that a visualization which depends on some computations scales even if I just use the saved items to prune the underlying tree (a SunburstView).
Now I have just implemented the BerkeleyDB binding and use the Collection-API. I'm running a transaction after a specified amount of items have been appended to a List to save the list in a database:
<pre>
/** {@inheritDoc} */
@Override
public void diffListener(final EDiff paramDiff, final IStructuralItem paramNewNode,
final IStructuralItem paramOldNode, final DiffDepth paramDepth) {
mDiffs.add(new Diff(paramDiff, paramNewNode.getNodeKey(), paramOldNode.getNodeKey(), paramDepth));
mEntries++;
if (mEntries == AFTER_DIFFS) {
try {
mRunner.run(new PopulateDatabase(mDiffDatabase, mDiffs));
} catch (final Exception e) {
LOGWRAPPER.error(e.getMessage(), e);
mEntries = 0;
mDiffs = new LinkedList<>();
/** {@inheritDoc} */
@Override
public void diffDone() {
try {
mRunner.run(new PopulateDatabase(mDiffDatabase, mDiffs));
} catch (final Exception e) {
LOGWRAPPER.error(e.getMessage(), e);
mStart.countDown();
</pre>
Now I think about what's the right value for transactions? AFTER_DIFFS is currently set to 100 which means everytime the List has 100 elements it's saved in a database within a transaction and a new instance is created. I currently don't have time to empirically measure certain values, but maybe one can get a suggestion which might be a good value or if it really depends? I'm persisting a rather small Object with two long values, an enum (with just a few values and no methods) and another small Object with 2 int values, if that's of significance.
I think the transaction is bound to the current thread, maybe it would be also good to use an ExecutorService with a single thread and let the transaction, the Runner.run(TransactionWorker); run in this thread?
best regards,
Johannes
I changed the database to a temporary database, but I'm getting a horrible read-performance (with and without the temporary database setting). I thought the database wouldn't be persisted if the data isn't too big.
Some debugging output is:
02:13:53.906 [pool-4-thread-1] DEBUG o.t.g.view.model.TraverseCompareTree - stats: I/O: Log file opens, fsyncs, reads, writes, cache misses.
bufferBytes=3,145,728
endOfLog=0x0/0x439
nBytesReadFromWriteQueue=0
nBytesWrittenFromWriteQueue=0
nCacheMiss=0
nFSyncRequests=0
nFSyncTimeouts=0
nFSyncs=0
nFileOpens=0
nLogBuffers=3
nLogFSyncs=0
nNotResident=0
nOpenFiles=0
nRandomReadBytes=0
nRandomReads=0
nRandomWriteBytes=0
nRandomWrites=0
nReadsFromWriteQueue=0
nRepeatFaultReads=0
nSequentialReadBytes=0
nSequentialReads=0
nSequentialWriteBytes=0
nSequentialWrites=0
nTempBufferWrites=0
nWriteQueueOverflow=0
nWriteQueueOverflowFailures=0
nWritesFromWriteQueue=0
Cache: Current size, allocations, and eviction activity.
adminBytes=153
avgBatchCACHEMODE=0
avgBatchCRITICAL=0
avgBatchDAEMON=0
avgBatchEVICTORTHREAD=0
avgBatchMANUAL=0
cacheTotalBytes=8,265,140
dataBytes=5,118,941
lockBytes=318
nBINsEvictedCACHEMODE=0
nBINsEvictedCRITICAL=0
nBINsEvictedDAEMON=0
nBINsEvictedEVICTORTHREAD=0
nBINsEvictedMANUAL=0
nBINsFetch=343
nBINsFetchMiss=0
nBINsStripped=0
nBatchesCACHEMODE=0
nBatchesCRITICAL=0
nBatchesDAEMON=0
nBatchesEVICTORTHREAD=0
nBatchesMANUAL=0
nCachedBINs=234
nCachedUpperINs=8
nEvictPasses=0
nINCompactKey=2
nINNoTarget=0
nINSparseTarget=8
nLNsFetch=686
nLNsFetchMiss=0
nNodesEvicted=0
nNodesScanned=0
nNodesSelected=0
nRootNodesEvicted=0
nThreadUnavailable=0
nUpperINsEvictedCACHEMODE=0
nUpperINsEvictedCRITICAL=0
nUpperINsEvictedDAEMON=0
nUpperINsEvictedEVICTORTHREAD=0
nUpperINsEvictedMANUAL=0
nUpperINsFetch=343
nUpperINsFetchMiss=0
requiredEvictBytes=0
sharedCacheTotalBytes=0
Cleaning: Frequency and extent of log file cleaning activity.
cleanerBackLog=0
fileDeletionBacklog=0
nCleanerDeletions=0
nCleanerEntriesRead=0
nCleanerRuns=0
nClusterLNsProcessed=0
nINsCleaned=0
nINsDead=0
nINsMigrated=0
nINsObsolete=0
nLNQueueHits=0
nLNsCleaned=0
nLNsDead=0
nLNsLocked=0
nLNsMarked=0
nLNsMigrated=0
nLNsObsolete=0
nMarkLNsProcessed=0
nPendingLNsLocked=0
nPendingLNsProcessed=0
nRepeatIteratorReads=0
nToBeCleanedLNsProcessed=0
totalLogSize=1,074
Node Compression: Removal and compression of internal btree nodes.
cursorsBins=0
dbClosedBins=0
inCompQueueSize=0
nonEmptyBins=0
processedBins=0
splitBins=0
Checkpoints: Frequency and extent of checkpointing activity.
lastCheckpointEnd=0x0/0x396
lastCheckpointId=1
lastCheckpointStart=0x0/0x16c
nCheckpoints=0
nDeltaINFlush=0
nFullBINFlush=0
nFullINFlush=0
Environment: General environment wide statistics.
btreeRelatchesRequired=0
Locks: Locks held by data operations, latching contention on lock table.
nLatchAcquireNoWaitUnsuccessful=0
nLatchAcquiresNoWaitSuccessful=0
nLatchAcquiresNoWaiters=0
nLatchAcquiresSelfOwned=0
nLatchAcquiresWithContention=0
nLatchReleases=0
nOwners=2
nReadLocks=2
nRequests=686
nTotalLocks=2
nWaiters=0
nWaits=0
nWriteLocks=0
Seems it hasn't got any cache misses at all and the other values seem to be ok, too?
best regards,
Johannes
Similar Messages
-
Problem with Collection API method LIMIT?
Hi,
I am trying to learn PL/SQL in my free time and I can't get collection_name.LIMIT to work correctly.
declare
type list is table of integer;
set_a list := list(1,2,3,3);
i pls_integer := 0;
begin
set_a.trim(2);
i := set_a.limit;
dbms_output.put_line('Trim(2) leaves ' || to_char(i) || ' spaces in list');
end;
The above code prints 'Trim(2) leaves spaces in list'. I first tried putting set_a.limit inside the to_char and got the same results. I tried using it in the expression for an IF statement as I have read in the book and online; something like if set_a.limit < 4 then... This returns true, while set_a.limit > 1 returns false.
Am I doing something wrong?
Oh, and I am using the win32_11gR2_database I got from the Oracle download page on Windows XP SP3.
Thanks.
Edited by: user13107973 on Aug 24, 2010 3:08 PMI figured it out, on closer inspection I see it is only used for varying arrays, and I was trying it on a nested table... Thanks for the advice.
So, I am reading a horrible book full of typos called "Oracle Database 11g PL/SQL Programming" from the Oracle Press and McGraw Hill.
BULK COLLECT INTO, page 123
"The LIMIT statement lets you constrain the size of bulk selections, but you can only use it with explicit cursors." - NOT what I asked about.
FORALL, page 127
"The FORALL loop is designed to work with Oracle collections. It lets you insert, update, or delete bulk data." - NOT what I asked about.
Collection API, page 253
"The LIMIT method returns the highest possible subscript value in a collection. It can only return a PLS_INTEGER type and can only be used by a VARRAY datatype. It has the following prototype..."
Edited by: user13107973 on Aug 25, 2010 12:09 PM
Edited by: user13107973 on Aug 25, 2010 12:09 PM -
Can anyone tell me how I can use API for transactional ODS?
ThanksHi,
use tcode SE37 and search for BAPI_ODSO*
/manfred -
Problems with Reflection API and intantiating an class from a string value
I want to instantiate a class with the name from a String. I have used the reflection api so:
static Object createObject(String className) {
Object object = null;
try {
Class classDefinition = Class.forName(className);
object = classDefinition.newInstance();
} catch (InstantiationException e) {
System.out.println(e);
} catch (IllegalAccessException e) {
System.out.println(e);
} catch (ClassNotFoundException e) {
System.out.println(e);
return object;
Let's say my class name is "Frame1".
and then if i use:
Frame1 frm = (Frame1) createObject("Frame1");
everything is ok but i cannot do this because the name "Frame1" is a String variable called "name" and it doesn't work like:
name frm = (name) createObject("Frame1");
where i'm i mistaking?
Thanks very much!i have understood what you have told me but here is a little problem
here is how my test code looks like
Class[] parameterTypes = new Class[] {String.class};
Object frm = createObject("Frame1");
Class cls = frm.getClass();
cls.getMethod("pack",parameterTypes);
cls.getMethod("validate",parameterTypes);
everything works ok till now.
usually if i would of had instantiated the "Frame1" class standardly the "cls" (or "frm" in the first question ) object would be an java.awt.Window object so now i can't use the function (proprietary):
frame_pos_size.frame_pos_size(frm,true);
this function requires as parameters: frame_pos_size(java.awt.Window, boolean)
because my cls or frm objects are not java.awt.Window i really don't find any solution for my problem. I hope you have understood my problem. Please help. Thanks a lot in advance. -
BODS Error with IDENTITY INSERT and Transactional Data Loading
Hi All,
We are facing some issues while working with SAP BODS,
Scenario: We have 4 tables in Microsoft SQL Server that contains identity Columns and they bears an Parent-Child Relationship among themselves.
We need to insert values into the tables simultaneously.
Solution we are trying to implement:
a) Trying Transactional Options for each table in the data store – but for that the preloading and post loading SQL tabs are going disabled
So error facing is enable identity_insert is set to OFF. We have everything enabled in database the user which connects the BODS is the owner of the database.
b) Trying Bulk Loading Options
Bulk Loading is able to insert values into tables, but then where there is a parent child relationship we are facing the error of Foreign-Key.
Please Share your views.
Thanks a lot in advance.
Regards
JoyYes I have tried that, if we use Transaction Loading then both pre-load and post load options are disabled for that.
But if we dont use transaction loading we are facing the parent child table loading problem. Foreign Key constraints are violated,
I have also tried scripting i.e enabling the identity insert before the data-flow begins.
Thanks and Regards
Joy -
Error with c++ API and cacheFactory
Hello,
I have tested coherence client in java and .net successfully but now I have some problems with C++.
I'm quite new with coherence... So it might be a "simple" error to resolve but I am really stuck here.
I'm using an simple exe in a console application to connect to my cache.
Visual studio shows me errors but I don't understand them.
I changed the settings of Visual studio according to this link
1) When i try to get my cache "NamedCache::Handle myCache = CacheFactory::getCache("testCache");
The error is :
Unhandled exception at 0x000007fefd9baa7d in testConsole.exe: Microsoft C++ exception: coherence::lang::throwable_spec<coherence::io::IOException,coherence::lang::extends<coherence::lang::Exception,std::ios_base::failure>,coherence::lang::implements<void,void,void,void,void,void,void,void,void,void,void,void,void,void,void,void>,coherence:: at memory location 0x0022eaa8..
2) When I try to configure the cachefactory using CacheFactory::configure and CacheFactory::loadXmlFile()
I have the same error :
Unhandled exception at 0x000007fefd9baa7d in testConsole.exe: Microsoft C++ exception: coherence::lang::throwable_spec<coherence::io::IOException,coherence::lang::extends<coherence::lang::Exception,std::ios_base::failure>,coherence::lang::implements<void,void,void,void,void,void,void,void,void,void,void,void,void,void,void,void>,coherence:: at memory location 0x0013baf8..
I really don't know why i have those errors and what they mean. It is the same error for both but I don't have no idea how to resolve it...
Can someone help me ?
Thanks
Edited by: 791979 on 31 août 2010 10:41
Edited by: 791979 on 31 août 2010 10:44Thanks for the type of the exception. I didn't know what to put so I wrote a general exception type "catch(...)"...
So here is the error message.
coherence::io::IOException: Exception occurred during parsing: The supplied script must be ASCII.
at class coherence::lang::TypedHandle<class coherence::run::xml::XmlDocument> __cdecl coherence::run::xml::SimpleParser::parseXml(class coherence::lang::String::StringHandle<class coherence::lang::String const >)(SimpleParser.cpp:53)
... debugger may be required to obtain stack frameson thread "main"
And my cache-config.xml is :
<?xml version="1.0" encoding="UTF-8" ?>
<cache-config xmlns="http://schemas.tangosol.com/cache">
<caching-scheme-mapping>
<cache-mapping>
<cache-name>stock</cache-name>
<scheme-name>local-stock</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<near-scheme>
<scheme-name>local-stock</scheme-name>
<front-scheme>
<local-scheme>
<high-units>1000</high-units>
</local-scheme>
</front-scheme>
<back-scheme>
<remote-cache-scheme>
<scheme-ref>remote-stock</scheme-ref>
</remote-cache-scheme>
</back-scheme>
<invalidation-strategy>all</invalidation-strategy>
</near-scheme>
<remote-cache-scheme>
<scheme-name>remote-stock</scheme-name>
<service-name>ExtendTcpCacheService</service-name>
<initiator-config>
<tcp-initiator>
<remote-addresses>
<socket-address>
<address system-property="tangosol.coherence.proxy.address">127.0.0.1</address>
<port system-property="tangosol.coherence.proxy.port">9099</port>
</socket-address>
</remote-addresses>
<connect-timeout>10s</connect-timeout>
</tcp-initiator>
<outgoing-message-handler>
<request-timeout>30s</request-timeout>
</outgoing-message-handler>
<serializer>
<class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
<init-params>
<init-param>
<param-type>string</param-type>
<param-value>pof-config.xml</param-value>
</init-param>
</init-params>
</serializer>
</initiator-config>
</remote-cache-scheme>
</caching-schemes>
</cache-config>
Is there something wrong with this cache-config.xml ? -
Problem with drawing api and textfield
I have a flash file that will be used on multiple sites and
therefore will need to be able to change it's colors based on
colors fed in through parameters. I'm trying to draw a rounded
rectangle button with some text on it. I can get everything to draw
except the text. When I debug it, the textfield variables show up
with everything set up properly so I'm not sure why it won't
display. Here's the code that creates the button and text. And it's
adding the Sprites to an movie clip on my stage called btnBG in
case you're wondering what that is.
import flash.display.Sprite;
import flash.display.GradientType;
import flash.geom.ColorTransform;
import flash.events.MouseEvent;
var btnSprite:Sprite = new Sprite(); //main button sprite
var btnOutline:Sprite = new Sprite(); //outline for button
var matrix:Matrix = new Matrix();
var btnCircleOutline:Sprite = new Sprite();
var btnCircle:Sprite = new Sprite();
var btnArrow:Sprite = new Sprite();
var btnOverlay:Sprite = new Sprite();
btnCircleOutline.graphics.beginFill(btnOutlineStartColor,
1);
btnCircleOutline.graphics.drawCircle(59,11,7);
matrix.createGradientBox(15, 15, Math.PI/2,0,0);
btnCircle.graphics.beginGradientFill(GradientType.LINEAR,
[btnEndColor, btnStartColor], [1,1], [0,255], matrix);
btnCircle.graphics.drawCircle(59,11,6);
//draw arrow shape
btnArrow.graphics.beginFill(0xcad7e9, 1);
btnArrow.graphics.moveTo(57, 7);
btnArrow.graphics.lineTo(62, 11);
btnArrow.graphics.lineTo(57, 15);
btnArrow.graphics.endFill();
//draw invisible overlay
btnOverlay.graphics.beginFill(0xffffff,0);
btnOverlay.graphics.drawRect(0,0,70,22);
btnOverlay.buttonMode = true;
btnOverlay.useHandCursor = true;
btnOverlay.addEventListener(MouseEvent.CLICK, clickHandler);
//draw button outline and gradient fill
matrix.createGradientBox(70,22,Math.PI/2,0,0);
btnOutline.graphics.beginGradientFill(GradientType.LINEAR,
[btnOutlineStartColor, btnOutlineEndColor], [1,1], [0,255],
matrix);
btnSprite.graphics.beginGradientFill(GradientType.LINEAR,
[btnStartColor, btnEndColor], [1,1], [0,255], matrix);
btnOutline.graphics.drawRoundRect(0,0,70,22,5,5);
btnSprite.graphics.drawRoundRect(1,1,68,20,3,3);
//draw buy now text on button
var btnText:TextField = new TextField();
var txtFormat:TextFormat = new TextFormat();
txtFormat.font = "Arial";
txtFormat.size = 18;
txtFormat.color = 0x000000;
btnText.setTextFormat(txtFormat);
btnText.embedFonts = true;
btnText.text = "Buy Now";
btnText.selectable = false;
btnBG.addChildAt(btnOutline, iIndexer++);
btnBG.addChildAt(btnSprite, iIndexer++);
btnBG.addChildAt(btnCircleOutline, iIndexer++);
btnBG.addChildAt(btnCircle, iIndexer++);
btnBG.addChildAt(btnArrow, iIndexer++);
btnBG.addChildAt(btnText, iIndexer++);
btnBG.addChildAt(btnOverlay, iIndexer++);You can only set embedFonts to true if you are using a font
in the library. There is no need to embed the Arial font as it is
on basically all computers, also use btnText.defaultTextFormat =
txtFormat;.
txtFormat.font = "Arial";
txtFormat.size = 18;
txtFormat.color = 0x000000;
btnText.defaultTextFormat = txtFormat;
//btnText.embedFonts = true;
btnText.text = "Buy Now";
btnText.selectable = false; -
Issues with signing an Email with JavaMail Api and BouncyCastle provider
Hi everyone
I am getting this strange error which I can not figure out what is it about.
Exception in thread "main" java.lang.NoSuchFieldError: id_alg_CMS3DESwrap
at org.bouncycastle.cms.CMSEnvelopedGenerator.<clinit>(Unknown Source)
at org.bouncycastle.mail.smime.SMIMEGenerator.<clinit>(Unknown Source)
at net.suberic.crypto.bouncycastle.SMIMEEncryptionUtils.signBodyPart(SMIMEEncryptionUtils.java:215)
at net.suberic.crypto.bouncycastle.SMIMEEncryptionUtils.signMessage(SMIMEEncryptionUtils.java:257)
at cityLocator.SignMessage.main(SignMessage.java:53)
This is my code :
public static void main(String[] argv) {
try {
Session mailSession = Session.getDefaultInstance(System.getProperties());
MimeMessage newMessage = new MimeMessage(mailSession);
String content = "This is a signed message. \n\nYou know it has actually been sent by this fictional person.\n\nImagine if you received an email claiming to be from this nonexistent person, but was actually from some other made-up persona? That would be bad.\n\n";
newMessage.setContent(content, "text/plain");
newMessage.setFrom();
newMessage.setRecipients(Message.RecipientType.TO, "[email protected]");
newMessage.setSubject("This one is signed.");
newMessage.saveChanges();
// get our signer(s)
EncryptionUtils smimeUtils = EncryptionManager.getEncryptionUtils(EncryptionManager.SMIME);
// load the associated store(s)
char[] smimePw = new String("********").toCharArray();
EncryptionKeyManager smimeKeyMgr = smimeUtils.createKeyManager();
smimeKeyMgr.loadPrivateKeystore(new FileInputStream(new File("Dmcave1.pfx")), smimePw);
smimeKeyMgr.loadPublicKeystore(new FileInputStream(new File("Dmcave1.pfx")), smimePw);
java.security.Key smimeKey = smimeKeyMgr.getPrivateKey("***************", smimePw2);
MimeMessage smimeSignedMsg = smimeUtils.signMessage(mailSession, newMessage, smimeKey);
Error is here--> smimeSignedMsg.writeTo(new com.sun.mail.util.CRLFOutputStream(new FileOutputStream(new File("smimeSigned.msg"))));
MimeMessage pgpSignedMsg = pgpUtils.signMessage(mailSession, newMessage, pgpKey);
} catch (Exception e) {
e.printStackTrace();
Any ideas or helps would be appreciatedHi everyone
I am getting this strange error which I can not figure out what is it about.
Exception in thread "main" java.lang.NoSuchFieldError: id_alg_CMS3DESwrap
at org.bouncycastle.cms.CMSEnvelopedGenerator.<clinit>(Unknown Source)
at org.bouncycastle.mail.smime.SMIMEGenerator.<clinit>(Unknown Source)
at net.suberic.crypto.bouncycastle.SMIMEEncryptionUtils.signBodyPart(SMIMEEncryptionUtils.java:215)
at net.suberic.crypto.bouncycastle.SMIMEEncryptionUtils.signMessage(SMIMEEncryptionUtils.java:257)
at cityLocator.SignMessage.main(SignMessage.java:53)
This is my code :
public static void main(String[] argv) {
try {
Session mailSession = Session.getDefaultInstance(System.getProperties());
MimeMessage newMessage = new MimeMessage(mailSession);
String content = "This is a signed message. \n\nYou know it has actually been sent by this fictional person.\n\nImagine if you received an email claiming to be from this nonexistent person, but was actually from some other made-up persona? That would be bad.\n\n";
newMessage.setContent(content, "text/plain");
newMessage.setFrom();
newMessage.setRecipients(Message.RecipientType.TO, "[email protected]");
newMessage.setSubject("This one is signed.");
newMessage.saveChanges();
// get our signer(s)
EncryptionUtils smimeUtils = EncryptionManager.getEncryptionUtils(EncryptionManager.SMIME);
// load the associated store(s)
char[] smimePw = new String("********").toCharArray();
EncryptionKeyManager smimeKeyMgr = smimeUtils.createKeyManager();
smimeKeyMgr.loadPrivateKeystore(new FileInputStream(new File("Dmcave1.pfx")), smimePw);
smimeKeyMgr.loadPublicKeystore(new FileInputStream(new File("Dmcave1.pfx")), smimePw);
java.security.Key smimeKey = smimeKeyMgr.getPrivateKey("***************", smimePw2);
MimeMessage smimeSignedMsg = smimeUtils.signMessage(mailSession, newMessage, smimeKey);
Error is here--> smimeSignedMsg.writeTo(new com.sun.mail.util.CRLFOutputStream(new FileOutputStream(new File("smimeSigned.msg"))));
MimeMessage pgpSignedMsg = pgpUtils.signMessage(mailSession, newMessage, pgpKey);
} catch (Exception e) {
e.printStackTrace();
Any ideas or helps would be appreciated -
JAVA API AND ABAP API SIMPLE SCENARIO
Hello MDM gurus
I have never used any Java API or ABAP API to leverage and present MDM functionalities on front end systems like portal,etc...
Could you please give me all the required to play around with JAVA api and ABAP api's.
Points will be given to every valuable answer.
ThanksHi Nazeer,
In order to use Portal you need Java APIs and to start with refer the MDM Java docs to get the basic idea of various classes and methods to be used in developing the simple java application and access it using portal.
http://help.sap.com/saphelp_mdm550/helpdata/en/47/9f23e5cf9e3c5ce10000000a421937/frameset.htm
Sample code for Duplicating Repository
public class TestDuplicateRepository
public static ConnectionPool simpleConnection;
public static RepositoryIdentifier repIdentifier,repIdentifier1;
public static String session;
public static String connection = "MDMServer_Test";
public static String repository1 = "Test_Repository";
public static String repository2 = "Test_Duplicate";
public static DBMSType dbmsType = DBMSType.MS_SQL;
public static void main(String[] args)throws CommandException, ConnectionException
//Creating Connection.
simpleConnection = ConnectionPoolFactory.getInstance(connection);
//Establishing connection with Repository.
repIdentifier = new RepositoryIdentifier(repository1, connection, dbmsType);
repIdentifier1 = new RepositoryIdentifier(repository2, connection, dbmsType);
//Creation Sever Session.
CreateServerSessionCommand createServerSessionCmd = new CreateServerSessionCommand(simpleConnection);
createServerSessionCmd.execute();
session = createServerSessionCmd.getSession();
//Authenticating Server Session.
AuthenticateServerSessionCommand auth= new AuthenticateServerSessionCommand(simpleConnection);
auth.setSession(session);
auth.setUserName("Admin");
auth.setUserPassword("Admin");
auth.execute();
session = auth.getSession();
//Duplicate Repository Command
DuplicateRepositoryCommand duplRepCmd = new DuplicateRepositoryCommand(simpleConnection);
duplRepCmd.setDBMSUserName("sa");
duplRepCmd.setDBMSUserPassword("abc");
duplRepCmd.setSession(session);
duplRepCmd.setSourceRepositoryIdentifier(repIdentifier);
duplRepCmd.setTargetRepositoryIdentifier(repIdentifier1);
duplRepCmd.execute();
Similarly you can try with Getting server version, Archive repository and then move on to adding,modifying records etc.
For ABAP APIs refer the below link
http://help.sap.com/saphelp_mdm550/helpdata/en/44/93aa6e31381053e10000000a422035/frameset.htm
Regards,
Jitesh Talreja -
Attaching/Detaching libraries with Java API
Hello,
In my forms (Forms10g), sometimes, libraries had been attached in lower case although files are in upper case. This causes compilation errors on UNIX systems.
I'm trying to detach these libraries with Java APIs and then reattach them in upper case.
But I get an error when I want to save the module.
Here is my code :
public class UpperPll {
public UpperPll (String formName) {
try
FormModule form = FormModule.open("C:/AttachPll/" + formName);
System.out.println("Form Name is " + form.getName());
JdapiIterator AttachPll = form.getAttachedLibraries();
while(AttachPll.hasNext())
try
JdapiObject jo = (JdapiObject)AttachPll.next();
System.out.println(jo.getName());
if (jo.getName().toLowerCase().equals(jo.getName()))
AttachedLibrary.find(form,jo.getName().toUpperCase()).detach();
System.out.println(jo.getName().toUpperCase());
new AttachedLibrary(form,jo.getName().toUpperCase());
catch (JdapiIllegalStateException jdise)
jdise.printStackTrace();
form.save("C:/AttachPll/New/" + form.getName() + ".fmb");
Jdapi.shutdown();
catch (JdapiException jde)
jde.printStackTrace();
public static void main (String[] args) {
try {
FileReader r = new FileReader( "C:/AttachPll/listemodule.txt" );
BufferedReader br = new BufferedReader( r );
try {
String module;
while ( ( module = br.readLine() ) != null ) {
new UpperPll(module);
} finally {
r.close();
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
And here are the errors I get :
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x2FBBDCB
Function=icobad+0xB
Library=C:\DevSuiteHome_1\bin\frmcom.dll
Current Java thread:
at oracle.forms.jdapi.BaseAPI._jni_save_form(Native Method)
at oracle.forms.jdapi.FormModule.save(Unknown Source)
at UpperPll.<init>(UpperPll.java:39)
at UpperPll.main(UpperPll.java:55)
Dynamic libraries:
0x00400000 - 0x0040B000 C:\DevSuiteHome_1\jdk\bin\javaw.exe
0x7C910000 - 0x7C9C7000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 - 0x7C904000 C:\WINDOWS\system32\kernel32.dll
0x77DA0000 - 0x77E4C000 C:\WINDOWS\system32\ADVAPI32.dll
0x77E50000 - 0x77EE1000 C:\WINDOWS\system32\RPCRT4.dll
0x77D10000 - 0x77DA0000 C:\WINDOWS\system32\USER32.dll
0x77EF0000 - 0x77F37000 C:\WINDOWS\system32\GDI32.dll
0x77BE0000 - 0x77C38000 C:\WINDOWS\system32\MSVCRT.dll
0x62DC0000 - 0x62DC9000 C:\WINDOWS\system32\LPK.DLL
0x753C0000 - 0x7542B000 C:\WINDOWS\system32\USP10.dll
0x08000000 - 0x08139000 C:\DevSuiteHome_1\jdk\jre\bin\client\jvm.dll
0x76AE0000 - 0x76B0F000 C:\WINDOWS\system32\WINMM.dll
0x6BD00000 - 0x6BD0D000 C:\WINDOWS\system32\SYNCOR11.DLL
0x10000000 - 0x10007000 C:\DevSuiteHome_1\jdk\jre\bin\hpi.dll
0x00940000 - 0x0094E000 C:\DevSuiteHome_1\jdk\jre\bin\verify.dll
0x00950000 - 0x00969000 C:\DevSuiteHome_1\jdk\jre\bin\java.dll
0x00970000 - 0x0097D000 C:\DevSuiteHome_1\jdk\jre\bin\zip.dll
0x02F60000 - 0x02F6F000 C:\DevSuiteHome_1\BIN\frmjapi.dll
0x02F70000 - 0x02F8C000 C:\DevSuiteHome_1\bin\frmd2f.dll
0x663D0000 - 0x66414000 C:\DevSuiteHome_1\bin\CA.dll
0x66340000 - 0x6636A000 C:\DevSuiteHome_1\bin\mmc.dll
0x64CA0000 - 0x64CB1000 C:\DevSuiteHome_1\bin\UTL.dll
0x60730000 - 0x607DC000 C:\DevSuiteHome_1\bin\oracore10.dll
0x608D0000 - 0x60963000 C:\DevSuiteHome_1\bin\oranls10.dll
0x62B40000 - 0x62B53000 C:\DevSuiteHome_1\bin\oraunls10.dll
0x60C40000 - 0x60C47000 C:\DevSuiteHome_1\bin\orauts.dll
0x719F0000 - 0x71A07000 C:\WINDOWS\system32\WS2_32.dll
0x719E0000 - 0x719E8000 C:\WINDOWS\system32\WS2HELP.dll
0x774A0000 - 0x775DD000 C:\WINDOWS\system32\ole32.dll
0x616B0000 - 0x61891000 C:\DevSuiteHome_1\bin\oraclient10.dll
0x62B60000 - 0x62B66000 C:\DevSuiteHome_1\bin\oravsn10.dll
0x60D30000 - 0x60DE8000 C:\DevSuiteHome_1\bin\oracommon10.dll
0x60300000 - 0x60720000 C:\DevSuiteHome_1\bin\orageneric10.dll
0x629C0000 - 0x629D2000 C:\DevSuiteHome_1\bin\orasnls10.dll
0x62B80000 - 0x62C86000 C:\DevSuiteHome_1\bin\oraxml10.dll
0x02F90000 - 0x02FA1000 C:\WINDOWS\system32\MSVCIRT.dll
0x607E0000 - 0x608CC000 C:\DevSuiteHome_1\bin\oran10.dll
0x62000000 - 0x6202C000 C:\DevSuiteHome_1\bin\oranl10.dll
0x62030000 - 0x62042000 C:\DevSuiteHome_1\bin\oranldap10.dll
0x62090000 - 0x62184000 C:\DevSuiteHome_1\bin\orannzsbb10.dll
0x61E10000 - 0x61E52000 C:\DevSuiteHome_1\bin\oraldapclnt10.dll
0x61F30000 - 0x61F47000 C:\DevSuiteHome_1\bin\orancrypt10.dll
0x71A10000 - 0x71A1A000 C:\WINDOWS\system32\WSOCK32.dll
0x76D10000 - 0x76D29000 C:\WINDOWS\system32\iphlpapi.dll
0x770E0000 - 0x7716C000 C:\WINDOWS\system32\OLEAUT32.dll
0x621A0000 - 0x621D7000 C:\DevSuiteHome_1\bin\oranro10.dll
0x621F0000 - 0x621FC000 C:\DevSuiteHome_1\bin\orantcp10.dll
0x61F70000 - 0x61F76000 C:\DevSuiteHome_1\bin\oranhost10.dll
0x61F20000 - 0x61F26000 C:\DevSuiteHome_1\bin\orancds10.dll
0x62210000 - 0x62216000 C:\DevSuiteHome_1\bin\orantns10.dll
0x60970000 - 0x60C31000 C:\DevSuiteHome_1\bin\orapls10.dll
0x62500000 - 0x62507000 C:\DevSuiteHome_1\bin\oraslax10.dll
0x627B0000 - 0x628B3000 C:\DevSuiteHome_1\bin\oraplp10.dll
0x618B0000 - 0x61905000 C:\DevSuiteHome_1\bin\orahasgen10.dll
0x622B0000 - 0x622E6000 C:\DevSuiteHome_1\bin\oraocr10.dll
0x622F0000 - 0x62315000 C:\DevSuiteHome_1\bin\oraocrb10.dll
0x6FEE0000 - 0x6FF34000 C:\WINDOWS\system32\NETAPI32.dll
0x76BA0000 - 0x76BAB000 C:\WINDOWS\system32\PSAPI.DLL
0x62A80000 - 0x62AF6000 C:\DevSuiteHome_1\bin\orasql10.dll
0x662F0000 - 0x66320000 C:\DevSuiteHome_1\bin\mmi.dll
0x64F10000 - 0x64F21000 C:\DevSuiteHome_1\bin\UIIM.dll
0x64CE0000 - 0x64DBD000 C:\DevSuiteHome_1\bin\UIW.dll
0x64CD0000 - 0x64CD7000 C:\DevSuiteHome_1\bin\UTC.dll
0x64CC0000 - 0x64CC9000 C:\DevSuiteHome_1\bin\UTJ.dll
0x72F50000 - 0x72F76000 C:\WINDOWS\system32\WINSPOOL.DRV
0x58B50000 - 0x58BE7000 C:\WINDOWS\system32\COMCTL32.dll
0x64ED0000 - 0x64EF6000 C:\DevSuiteHome_1\bin\UIOLE.dll
0x76340000 - 0x7638A000 C:\WINDOWS\system32\comdlg32.dll
0x77F40000 - 0x77FB6000 C:\WINDOWS\system32\SHLWAPI.dll
0x7C9D0000 - 0x7D1F3000 C:\WINDOWS\system32\SHELL32.dll
0x64AD0000 - 0x64C05000 C:\DevSuiteHome_1\bin\VGS.dll
0x64E30000 - 0x64E93000 C:\DevSuiteHome_1\bin\UIREM.dll
0x659A0000 - 0x659EE000 C:\DevSuiteHome_1\bin\ROS.dll
0x66250000 - 0x6627E000 C:\DevSuiteHome_1\bin\mmw.dll
0x662A0000 - 0x662B0000 C:\DevSuiteHome_1\bin\mmv.dll
0x73AA0000 - 0x73AB7000 C:\WINDOWS\system32\AVIFIL32.dll
0x77BB0000 - 0x77BC5000 C:\WINDOWS\system32\MSACM32.dll
0x75BA0000 - 0x75BC1000 C:\WINDOWS\system32\MSVFW32.dll
0x662C0000 - 0x662DF000 C:\DevSuiteHome_1\bin\mms.dll
0x66810000 - 0x66A2B000 C:\DevSuiteHome_1\bin\DE.dll
0x627A0000 - 0x627AF000 C:\DevSuiteHome_1\bin\oraplc10.dll
0x64F50000 - 0x64F66000 C:\DevSuiteHome_1\bin\UICC.dll
0x64FB0000 - 0x64FDA000 C:\DevSuiteHome_1\bin\UCOL.dll
0x02FB0000 - 0x030CA000 C:\DevSuiteHome_1\bin\frmcom.dll
0x66380000 - 0x66389000 C:\DevSuiteHome_1\bin\mma.dll
0x64FF0000 - 0x65003000 C:\DevSuiteHome_1\bin\UAT.dll
0x66220000 - 0x6623C000 C:\DevSuiteHome_1\bin\nn.dll
0x64F70000 - 0x64F94000 C:\DevSuiteHome_1\bin\UIA.dll
0x64F30000 - 0x64F45000 C:\DevSuiteHome_1\bin\UIDC.dll
0x030D0000 - 0x03194000 C:\DevSuiteHome_1\bin\frmdig.dll
0x031A0000 - 0x0324D000 C:\DevSuiteHome_1\bin\frmdug.dll
0x66210000 - 0x66215000 C:\DevSuiteHome_1\bin\obs.dll
0x77390000 - 0x77492000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll
0x5B090000 - 0x5B0C8000 C:\WINDOWS\system32\uxtheme.dll
0x74690000 - 0x746DB000 C:\WINDOWS\system32\MSCTF.dll
0x76BE0000 - 0x76C0E000 C:\WINDOWS\system32\WINTRUST.dll
0x779E0000 - 0x77A76000 C:\WINDOWS\system32\CRYPT32.dll
0x77A80000 - 0x77A92000 C:\WINDOWS\system32\MSASN1.dll
0x76C40000 - 0x76C68000 C:\WINDOWS\system32\IMAGEHLP.dll
0x72C70000 - 0x72C79000 C:\WINDOWS\system32\wdmaud.drv
0x72C60000 - 0x72C68000 C:\WINDOWS\system32\msacm32.drv
0x77BA0000 - 0x77BA7000 C:\WINDOWS\system32\midimap.dll
0x5D3F0000 - 0x5D491000 C:\WINDOWS\system32\DBGHELP.dll
0x77BD0000 - 0x77BD8000 C:\WINDOWS\system32\VERSION.dll
Heap at VM Abort:
Heap
def new generation total 576K, used 35K [0x10010000, 0x100b0000, 0x104f0000)
eden space 512K, 6% used [0x10010000, 0x10017c90, 0x10090000)
from space 64K, 7% used [0x10090000, 0x10091348, 0x100a0000)
to space 64K, 0% used [0x100a0000, 0x100a0000, 0x100b0000)
tenured generation total 1408K, used 122K [0x104f0000, 0x10650000, 0x14010000)
the space 1408K, 8% used [0x104f0000, 0x1050e930, 0x1050ea00, 0x10650000)
compacting perm gen total 4096K, used 1642K [0x14010000, 0x14410000, 0x18010000)
the space 4096K, 40% used [0x14010000, 0x141aaac8, 0x141aac00, 0x14410000)
Local Time = Wed Apr 12 10:35:49 2006
Elapsed Time = 5
# The exception above was detected in native code outside the VM
# Java VM: Java HotSpot(TM) Client VM (1.4.2_06-b03 mixed mode)
# An error report file has been saved as hs_err_pid3184.log.
# Please refer to the file for further information.
Can anyone help me ?
Message was edited by:
dbouchierWe do something very simular. We rename everything to lowercase for the same reasons. I've pasted a snippet of the code we're using at the end of this post.
To get the full source code of our converter have a look at http://www.oratransplant.nl/2005/05/30/custom-built-forms-migration-assistant/#comment-642
Here is the code snippet:
while (attachedLibs.hasNext()) {
AttachedLibrary attachedLib = (AttachedLibrary)attachedLibs.next();
String attachedLibLocation = attachedLib.getLibraryLocation();
out("Found attached library " + attachedLibLocation, logLevel,
false);
if (attachedLib.getName().equalsIgnoreCase("obsolete_forms6")) {
obsoleteAttached = true;
if (attachedLib.getName().equalsIgnoreCase("webreports")) {
webReportsAttached = true;
// converted name of attached lib to lowercase
if ((!attachedLibLocation.equals(attachedLibLocation.toLowerCase())) &&
lowerLib) {
out(attachedLib,
"Converting filename to lowercase (" + attachedLibLocation.toLowerCase() +
")", logLevel + 1, true);
attachedLibLocation = attachedLibLocation.toLowerCase();
pllChanged = true;
// attachedLibLocation = attachedLibLocation.toUpperCase();
pldText.append(".attach LIBRARY " + attachedLibLocation +
" END NOCONFIRM\n");
out("Re-attaching library " + attachedLibLocation, logLevel + 1,
false);
} -
Hi all ,
How we can work with JAVA APIs and MDM .
Please tell step by step ways.
thanks in advance.
Thnks
nmHi Man,
You have to specify the correct JAR files in the classpath of the Java Virtual Machine (JVM). The API consists of five JAR files:
1. mdm-admin.jar
2. mdm-common.jar
3. mdm-core.jar
4. mdm-data.jar
5. mdm-protocol.jar
These files in one single archive file with the name MDMJavaAPI_Ver<buildnumber>.zip. you can download this file from the service market place by using mentioned below link:
http://service.sap.com/swdc
then goto Download>Support Packages and Patches> Entry by application group -->SAP NetWeaver -->SAP MDM -->SAPMDM5.5 -->Java API
for the Java API documentation, you can download it from the link below:
http://help.sap.com/javadocs/MDM/current
But remember one thing that this JAVA API Version file must be compitable with your MDM Server version.you can verify this as per the build version.
Hope this will help you.
TNR,
Saurabh...
Edited by: Saurabh Kumar Sahu on Feb 1, 2008 8:09 AM
Edited by: Saurabh Kumar Sahu on Feb 4, 2008 7:49 AM -
Problems with environments and transactional mode in the Python API
Hello everyone,
I have been having problems with the Python API, and I wonder if anyone can comment? I am using DB XML version 2.2.13, with python 2.3 (RedHat linux WS 4.0) and python 2.4 (SuSE 10.1) with identical results. I started with a simple example:
#!/usr/bin/python
"""XPath example from http://www.w3schools.com/xpath/default.asp
ported to DbXML
from bsddb3.db import *
from dbxml import *
books = """<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
[xml data omitted for brevity]
</bookstore>"""
if __name__ == "__main__":
conFlags = DB_CREATE | DB_NOMMAP
myMgr = XmlManager()
myMgr.setDefaultContainerFlags(conFlags)
myMgr.setDefaultContainerType( XmlContainer.NodeContainer)
uc = myMgr.createUpdateContext()
container = myMgr.createContainer("books.dbxml")
container.putDocument("books.xml", books, uc)So far, so good - this works, and creates a container books.dbxml that I can open and query. Next, I try to instantiate the XmlManager using an environment:
if __name__ == "__main__":
envFlags = DB_CREATE | DB_PRIVATE
conFlags = DB_CREATE | DB_EXCL | DB_NOMMAP
myEnv = DBEnv()
myEnv.open("/home/pkeller/dbxml_tests", envFlags, 0)
myMgr = XmlManager(myEnv, DBXML_ADOPT_DBENV)
myMgr.setDefaultContainerFlags(conFlags)
myMgr.setDefaultContainerType( XmlContainer.NodeContainer)
uc = myMgr.createUpdateContext()
container = myMgr.createContainer("books.dbxml")
container.putDocument("books.xml", books, uc)This fails with the following output:
Traceback (most recent call last):
File "w3school_xpath_c2.py", line 60, in ?
container = myMgr.createContainer("books.dbxml")
File "/scratch_bernoulli/pkeller/dbxml/install/lib/python2.3/site-packages/dbxml.py", line 125, in createContainer
def createContainer(*args): return dbxml.XmlManagercreateContainer(*args)
RuntimeError: Error: Invalid argument
Segmentation faultA bit odd - I can't find anything in the docs about the required arguments to XmlManager.createContainer being different if an environment has been used explicitly.
Anyway, I persevered (my aim being to use transactional mode in Python). Changing the environment and container flags like so:
envFlags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE
conFlags = DB_CREATE | DB_EXCL | DBXML_TRANSACTIONAL | DB_NOMMAPThis change allowed the script to run, outputting the single classic line:
Segmentation fault(the C++ API docs at http://www.sleepycat.com/xmldocs/gsg_xml/cxx/transaction.html#initializetransaction are incorrect by the way - there is no flag DB_TRANSACTIONAL).
In spite of the segfault, the file "books.dbxml" was produced and could be queried by another application. A transaction log file "log.0000000001" was also written (10485760 bytes long).
Running this last example again with "python -v" showed that the segfault was being produced during the python's cleanup phase:
# clear __builtin__._
# clear sys.path
# clear sys.argv
# clear sys.ps1
# clear sys.ps2
# clear sys.exitfunc
# clear sys.exc_type
# clear sys.exc_value
# clear sys.exc_traceback
# clear sys.last_type
# clear sys.last_value
# clear sys.last_traceback
# clear sys.path_hooks
# clear sys.path_importer_cache
# clear sys.meta_path
# restore sys.stdin
# restore sys.stdout
# restore sys.stderr
# cleanup __main__
Segmentation faultCan anyone clarify what is going on? I had been hoping to deploy DB XML as an alternative to something more admin-heavy, but with this behaviour that would be hard to justify. A dirty exit from Python means that no-one will consider trusting their data to this engine (or am I doing something wrong?).
Regards,
Peter.Peter,
Your first failure -- invalid argument -- was due to an invalid combination of
flags to DBEnv.open(). Along with DB_CREATE you need at least DB_INIT_MPOOL.
As you can see, it worked once you added more flags.
The second, cleanup problem (segmentation fault) is the result of out of order
destruction of objects. This is fixed in the next release (later this year), but
you can work around it by ensuring that your XmlContainer and XmlManager
objects are deleted/cleaned up before the DBEnv object.
Python will cleanup in reverse order of creation, unless you perform explicit
deletions, which is also fine (e.g. del container, del myMgr).
Explicit deletion is always safe.
Regards,
George -
Connection of MDM and R3 with ABAP API
Hi,
Can any body suggesst how to Configure R3 4.7 with ABAP API . Is this possible with R3 4.6 C system as well ?
KR,
DDo you mean to connect to some external DB from SAP?
Yes, you can. You can use transaction DBCO for this.
There are a couple of things you need to do, but also there is a lot of stuff in the web and especially in SCN regarding this subject.
Regards -
Issue with Cross-Company code transactions and Extended Withholding tax
Hi Gurus,
I am having an issue with Cross-company code transaction while posting expense with 2 different company codes.
In the 2 company codes, one company code is setup for Withholding tax and other was not set.
While posting in FB50, I am getting the below message and system does not allow to post the invoice.
Company codes have different settings for withholding tax treatment
Message no. F5786
Diagnosis
You are entering a document containing at least one vendor or customer item and which has line items in several company codes. The extended withholding tax treatment has been set to active in one of these company codes, but not in one of the other company codes.
System Response
You cannot enter this kind of document.
Procedure
Enter the transaction in two documents.
For this I tried to test the transaction by activating of extended Withholding tax for both the company codes. Then the invoice is posting correctly now.
The point is if I activate extended withholding tax for the Company code which is not using the setup, will it face any issues in other areas? and also kindly advice whether is this a right way to set up to fix the current problem.
Thanks for the Support and early response will be appreciated.
JBC.Hi Mamta,
Thanks for the Response. I think you misunderstood my scenario.
For Eg in FB60 with Co code 5065:
I am debiting the Expenses for Co Code 1000(Witholding tax not active) and crediting the Bank Account of Co Code 5065(Withholding tax setup is done for this co code). When I tried to post with these line items I have getting the error.
Posting GL Co Code
Dr 106520(Exp) 1000
Cr 202020(Bank) 5065
For this I tried by activating the Withholding tax for Co code 1000 which is not active before and post it. The system allows me to post the invoice.
I want to know whether is this a right way to solve this issue and will it impact on any other areas by only activating the Withholding tax for a Co code?
Thanks,
Bapu -
Help me please : Serious problems with collection-mapping, list-mapping and map-mappi
Hi everybody;
I have serious problems with list-mapping, collection-mapping and map-mapping.
Acording to specifications and requirements in a system I am working on it is needed to
get a "list" of values or an indivudual value.I am working with ORACLE 9i Database,
ORACLE 9i AS and ORACLE 9i JDEVELOPER.
I tried to map a master-detail relationship in an entity-bean, using list-mapping.
And this was very useful in order to get a "list" of details, ...but, when I wanted
to get a single value I have some problems with persistence, something about "saving a state"
despite I just want to get the value of a single detail.
I decided to change it to map-mapping and the problem related with a single detail
worked successfully, but I can get access to the whole bunch of details.
May anyone of you help me with that?
I am very confused I do not know what to do.
Have any of you a solution for that problem?
Thank you very much.Have you tried a restore in iTunes?
Maybe you are looking for
-
URGENT HELP REQUIRED: HP PRINTER ONLY WORKING IN BLACK AND WHITE
Hi - really hoping somone can help..! Just updated all three Macs to new OSX Mavericks and now both HP printers 940c and 5510c both only print in black and white. Need to get them working in colour for my daughters school homework!! Have seen all t
-
Itunes 10 error after updating
Recently i decided to update to the new itunes 10 and upon that the new GUI is lovely and sweet but when i try burning my new CD's I have this error problem of the music data not being on the disk. I tried a few times and the update just is corrupted
-
Hi, I have ACS and is running with windows database integration. But i have some issue the users are created in active directory and then acs ask if the user exists and then it hold the users mappings in his own database (normal operation) but the qu
-
Problems to print contacts with specific fields under Maverick.
I am unable to print contacts with specific, selected fields like `firm´ or `position´under Mavericks. The selected fields will not show up in the printing preview and not be printed at all. Any ideas?
-
CS Extension Builder 1.5 trial version is now live
All, today we launched the trial version of CS Extension Builder 1.5 on Adobe.com. The trial version is fully functional and will expire on November 1, 2011. Here is the relevant blogpost. Anyone with an AdobeID can download, use it and enjoy the ben