JMX und ServiceMBean - Zugriff mittels Client

tonick

Mitglied
Mit untenstehender ServiceMBean soll der Zugriff auf eine XML-Datenbank über xmldb realisiert werden. Meine Frage wäre nun, wie ich an die Collection (Methode getBaseCollection()) komme bzw. wie ein entsprechender Client aussehen muss?

In meinem Client muss ich ja irgendwann mal so was wie
Code:
Collection col = ???
stehen haben. Hiermit sollten sich dann XML-Dateien einfügen lassen, oder?

ServiceMBean:
Code:
import javax.ejb.Remote;

import org.jboss.system.ServiceMBean;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.XMLDBException;

@Remote
public interface XmlDbServiceMBean extends ServiceMBean{

	public String getDriver();
	public void setDriver(String driver);

	public String getBaseCollectionURI();
	public void setBaseCollectionURI(String baseCollectionURI);

	public Collection getBaseCollection() throws XMLDBException;

	public void setEncoding(String encode);
	public String getEncoding();
}

Code:
import org.jboss.naming.NonSerializableFactory;
import org.jboss.system.ServiceMBeanSupport;
import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.Database;
import org.xmldb.api.base.XMLDBException;
import org.xmldb.api.modules.CollectionManagementService;

import javax.ejb.Stateless;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Arrays;

@Stateless
public class XmlDbService extends ServiceMBeanSupport implements
		XmlDbServiceMBean {

	private String baseCollectionURI;
	private String driver;
	private Collection baseCollection;
	private String encoding = "ISO-8859-1";// "UTF-8";

	public void setEncoding(String encode) {
		this.encoding = encode;
	}

	public String getEncoding() {
		return this.encoding;
	}

	public String getDriver() {
		return driver;
	}

	public void setDriver(String driver) {
		this.driver = driver;
	}

	public String getBaseCollectionURI() {
		return baseCollectionURI;
	}

	public void setBaseCollectionURI(String baseCollectionURI) {
		this.baseCollectionURI = baseCollectionURI;
	}

	public Collection getBaseCollection() throws XMLDBException {
		baseCollection = DatabaseManager.getCollection(baseCollectionURI);
		return baseCollection;
	}

	protected void startService() throws Exception {
		
		log = org.jboss.logging.Logger
				.getLogger("XmlDbService");
		Context context = new InitialContext();
		Class c = Class.forName(driver);
		Database database = (Database) c.newInstance();
		DatabaseManager.registerDatabase(database);
		database.setProperty("create-database", "true");
		baseCollection = getBaseCollection();
		baseCollection.setProperty("encoding", encoding);
		log.info("Got base Collection");
		NonSerializableFactory.rebind(context, this.getClass().getName(), this);
		String[] collections = baseCollection.listChildCollections();
		log.info("ChildCollections " + Arrays.asList(collections));
	}

	protected void stopService() throws Exception {
		NonSerializableFactory.unbind(this.getClass().getName());
		if (baseCollection != null) {
			baseCollection.close();
			log.info("Closed base (db) collection");
		}
	}

	public static CollectionManagementService getCollectionManagementService(
			Collection parentCollection) throws XMLDBException {
		CollectionManagementService service = (CollectionManagementService) parentCollection
				.getService("CollectionManagementService", "1.0");
		return service;
	}
}
 

tonick

Mitglied
Soweit bin ich mittlerweile:

Code:
	public static void main(String args[]) throws Exception {

		JMXServiceURL u = new JMXServiceURL(
				"service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:1090/jmxconnector");
		JMXConnector c = JMXConnectorFactory.connect(u);
		MBeanServerConnection server = c.getMBeanServerConnection();

		ObjectName name = new ObjectName("eXist:type=Service,category=Database,name=XMLDB");
		System.out.println(server.getAttribute(name, "BaseCollectionURI"));
	}

Wie komme ich an die BaseCollection? Ist das überhaupt der richtige Weg?
 

tonick

Mitglied
damit es bei anderen schneller geht:

Code:
Context ctx = new InitialContext();
XmlDbServiceMBean xmlDbService = (XmlDbServiceMBean) ctx.lookup(XmlDbService.class.getName());
Collection baseCol = xmlDbService.getBaseCollection();

eigentlich logisch ...

local reicht mir erstmal, wie man remote drankommt weiß ich nicht
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Frage wegen AJAX-Zugriff auf ein Servlet Allgemeines EE 1
G War zugriff auf Ejb in EAR Allgemeines EE 0
S MessageDrivenBean Problem beim Zugriff auf Stateful EJB Allgemeines EE 2
R RMI Zugriff zwischen zwei WAR Projekten Allgemeines EE 1
G Nativer bzw. direkter Zugriff auf Active Directory Allgemeines EE 4
B Cookie beim erstem Zugriff auf Web-App ablegen Allgemeines EE 3
W JSP Zugriff auf RemoteInterfaces Allgemeines EE 2
S Pfad-Zugriff über Servlet-init() Allgemeines EE 2
Y Zugriff auf Files aus einer EAR Anwendung Allgemeines EE 8
F problem mit nullpointer bei DB zugriff Allgemeines EE 2
G Direkter Zugriff auf Servlet- doPost Allgemeines EE 15
J JSF: Zugriff auf message bundle Allgemeines EE 1
C Tomcat Zugriff auf lokale Dateien Allgemeines EE 2
J geschützter Bean zugriff mit einem Rich-Client Allgemeines EE 2
T Zugriff auf EJB Allgemeines EE 3
L Zugriff auf Manager nur von localhost Allgemeines EE 11
S 1. ContrBean + Image zurück, 2. DB-Zugriff per utilityklasse Allgemeines EE 5
N Zugriff auf Webapp nur für localhost definieren (Tomcat) Allgemeines EE 2
T Zugriff auf persistentes Set in einem Objekt Allgemeines EE 2
R Zugriff auf Dateien in Meta/Web-Inf Verzeichnis Allgemeines EE 7
R Zugriff auf Filter Servlet Allgemeines EE 10
R Zugriff auf Managed Bean aus einem Filter Allgemeines EE 2
N zugriff auf sämtliche navigation rules Allgemeines EE 6
A Zugriff auf Parameter im Deployment Descriptor Allgemeines EE 2
T Zugriff auf Session-Objekte in JSP Allgemeines EE 2
H Velocity: Zugriff auf Sessionvariable? Allgemeines EE 3
S Keystore Zugriff aus Web-Anwendung Allgemeines EE 2
S Alternative zu Properties/ Zugriff außerhalb der Locale Allgemeines EE 7
J In einem Bean zugriff auf ein SessionBean? Allgemeines EE 2
S Kein Zugriff auf Persistence Unit Allgemeines EE 4
K Zugriff auf Dateien beschränken Allgemeines EE 2
K dynamischer Zugriff auf .properties (Struts) Allgemeines EE 2
R Servlet/JSP zugriff auf Thumbnails ausserhalb Webroot Allgemeines EE 3
G Parameterübergabe u. -zugriff bei jsp:include Allgemeines EE 3
K [Tomcat 5.5.12+Axis] Datenbank Zugriff Allgemeines EE 2
K JSF - Zugriff auf Managed Beans Allgemeines EE 2
H JSP Zugriff auf JavaBean Allgemeines EE 4
S zugriff von jsp-seiten auf java klassen Allgemeines EE 3
L Wie bekomme ich denn einen Zugriff auf die EJB ??? Allgemeines EE 7
C [JSP] errorpage: Zugriff auf exception-Objekt Allgemeines EE 2
K Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS Allgemeines EE 1
G Allgemeine Frage zu Authentifizierung mittels Servlet API Allgemeines EE 2
A Variable Ausgabe mittels h:outputtext Allgemeines EE 3
H WebService mittels SessionBean aufrufen? Allgemeines EE 7
L speichern von daten mittels servlet in xml Allgemeines EE 8
F Wie auf request.params mittels ${} zugreifen? Allgemeines EE 7
K Prozess-Handling einer Batch-Datei mittels JSP Allgemeines EE 3
G Validierung mittels Struts. Benötige Hilfe. Allgemeines EE 7
clemson gesplittete struts-config mittels ant zusammenbauen Allgemeines EE 2
S JSP und Datenbankzugriff mittels Business Objekten Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben