AltovaXML_COM Prozess in Java beendet nicht

Velow

Mitglied
Hallo,
ich verwende in meinem Projekt die kostenlose AltovaXML Schnittstelle für Java.
Die ist sehr klein gehalten, hat aber alles was ich brauche und ist sehr leicht zu verstehen.

Nun habe ich ein Problem:
Nach aufruf meiner Funktion wird ein Prozess: AltovaXML_COM.exe aufgerufen.
Soweit so gut, ABER dieser Prozess beendet nicht. Ich habe also nach ein paar Funktionsaufrufe
einige AltovaXML_COM.exe Prozesse im Taskmanager die nicht schließen.

Selbst bei dem mitgelieferten Java-Beispiel von Altova beendet der Prozess nicht.
Kennt jemand die Schnittstelle und weiß Rat ?

Wäre echt cool wenn mir jemand weiterhelfen könnte. Diese 1000 Prozesse im Hintergrund ziehen stark an der Performance und sind unschön ;)

Hier die URL http://www.altova.com/de/altovaxml.html

Hier der Beispiel Code von Altova
Code:
import com.altova.engines.*;
import java.io.*;

/*	Java usage example for AltovaXML
**  	Purpose: 
	** -  Generate an AltovaXML application class
	**	- Use the validator class to check that the input instance is wellformed
	**  - Use the XQuery engine to copy the input instance 
	** note: for simplicity file names have been hardcoded, adjust the names as required. 
	** MAG Sept. 2006
	*/
public class AltovaXMLJavaExample

{
	public static void main(String[] args) {
		String inFilename = "c:/program files/altova/altovaxml2007/AltovaXMLexamples/simple.xml";
		String doesNotExist = "c:/program files/doesNotExist.xml";

		String xqFilename = "c:/program files/altova/altovaxml2007/AltovaXMLexamples/CopyInput.xq";
		String resultString;
		System.out.println("AltovaXML Java JNI XQuery");

		/* get application instance */
		try {
			IAltovaXMLFactory objXmlApp = AltovaXMLFactory.getInstance();
			/* get Validator and XQ  method pointers */
			IXMLValidator val = objXmlApp.getXMLValidatorInstance();
			IXQuery xq = objXmlApp.getXQueryInstance();
			/*remove comments on line below to see error being caught*/
			/*val.setInputXMLFileName(doesNotExist);*/
			 val.setInputXMLFileName(inFilename);  
			 if (val.isWellFormed()) {                      /*if the file is wellformed copy it using XQuery*/
				xq.setInputXMLFileName(inFilename);
				xq.setXQueryFileName(xqFilename);
				/* test return value */
				resultString = xq.executeAndGetResultAsString();
				if (resultString == null ) {
					System.out.println("XQuery error : "
							+ xq.getLastErrorMessage());
				}
				else{
					System.out.println("Transform contents>>" + resultString );
				}
			}
			else{
				System.out.println("Not wellformed error>>" + val.getLastErrorMessage() );
			}
			/* release instance pointer */
			objXmlApp.releaseInstance();
		} catch (Exception e  ) {
			System.out.println("Error : " + e);
		}
	}
}

dieser "objXmlApp.releaseInstance();" soll glaub ich die sache schließen, tut es aber nicht.


Mfg Velow
 
Hallo,

habe keinen Plan von der api, nur folgendes:
In dem Beispiel von http://sworigin.altova.com/de/manual2008/AltovaXML/index.html?axjavainterface.htm

wird noch ein
Code:
validator.releaseInstance();
vor
Code:
objXmlApp.releaseInstance();
durchgeführt. Ist sicher einen Test wert.

Es gibt diverse andere APIs, die quasi die selben Funktionalitäten bereitstellen und nicht nennenswert schwieriger oder kryptischer sind, z.B. jdom, sjsxp (xml-streaming).
 
du hast mich auf die richtige fährte gebracht.

ich hab vergessen alle Instanzen wieder zu schließen. ich hab gedacht es müsste nur objXmlApp.releaseInstance(); wieder geschlossen werden.

nachdem ich den Validator, IXQuery, und IAltovaXMLFactory geschlossen habe ging es ;)


Vielen Dank, TrueSun
 
Zurück