October 31st, 2008 @ 3:41pm | njames | Categories Java, XML/XSD | No Comments »
Pour un petit projet j'ai intégré une grammaire XSD de DublinCore avec l'élément import dans une grammaire perso issue de mes travaux, imageLibrary.xsd. A propos, une ressource documentaire très intéressante sur les XSD est: http://www.datypic.com/books/defxmlschema/chapter04.html. Dans le cas présent, c'est une application Web de recherche d'imagette de livre depuis les AWS, Amazon Web Services, et l'ajout ou le retrait d'une imagette à un profil de lecture en quelque sortes. Les imagettes sont stockées en local sur le serveur, et un fichier XML pour chaque profil contient les informations sur les fichiers images (metadata physiques, i.e. location, size etc.) ainsi que les données relatives au document obtenues par les AWS et intégrées dans des éléments XML DublinCore (creator, title etc.). Je génère des pages XHTML qui contiennent mes éléments DublinCore marshallés, il faut ainsi que JAXB génère des fragments XML et non un document XML complet. Pour faire en sorte que JAXB ne génère pas l'instruction processing du document XML lors de l'opération de marshalling, il faut utiliser la propriété suivante:
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
m étant un Marshaller. Autre point: bien que j'ai spécifié que mon élément contenant mes données DublinCore comme élément du document XML, (i.e. il fait partie des éléments déclarés dans ma XSD), JAXB ne veut pas marshaller uniquement cet élément. Une exception est levée disant qu'il manque l'annotation @XmlRootElement dans la classe de binding de cet élément. Ce post sur java.net en parle mais ne répond pas vraiment au problème. Ajouter cette annotation à la classe de binding résout le problème mais l'élément étant déclaré dans ma XSD, cette modification ne devrait pas être nécessaire... Cependant, pour Unmarshaller un fragment XML, on peut passer par un XMLStreamReader, et passer cet objet à l'unmarshaller (une rapide overview), on doit pouvoir en faire de même pour le marshalling.
July 29th, 2008 @ 3:51pm | njames | Categories Research | No Comments »
Amazon propose dans ses pages de présentation de ses services, un exemple d'infrastructure basée sur ses Web Services, un processus (un business process) d'adaptation de contenu multimédia. Pour mémoire, les services d'Amazon concernés seraient:
  • Amazon SQS, Simple Queue Service: proprose une infrastructure de messagerie, style MOM, avec une API simplissime, nombre de queues/account illimitées, nombre de messages/queues illimités, message texte de 1B à 8KB en HTTP Query et de 1B à 256KB en SOAP ou REST, formatage du texte indépendant, les messages sont retenus dans les queues pour 4 jours;
  • Amazon EC2, Elastic Compute Cloud: cloud computing;
  • Amazon S3, Simple Storage Service: stockage de données, de 1B à 5GB, interface SOAP et REST, le transport par défaut est HTTP (BitTorrent supporté);
  • Amazon SimpleDB: stockage de données structurées, et système de requêtage. Stocker, traiter et requêter des ensembles de données dans le cloud;
For example, here is how a video transcoding website uses Amazon EC2, Amazon SQS, Amazon S3, and Amazon SimpleDB together. End users submit videos to be transcoded to the website.  The videos are stored in Amazon S3, and a message ("the request message") is placed in an Amazon SQS queue ("the incoming queue") with a pointer to the video and to the target video format in the message. The transcoding engine, running on a set of Amazon EC2 instances, reads the request message from the incoming queue, retrieves the video from Amazon S3 using the pointer, and transcodes the video into the target format.  The converted video is put back into Amazon S3 and another message ("the response message") is placed in another Amazon SQS queue ("the outgoing queue") with a pointer to the converted video. At the same time, metadata about the video (e.g., format, date created and length) can be indexed into Amazon SimpleDB for easy querying. During this whole workflow, a dedicated Amazon EC2 instance can constantly monitor the incoming queue and, based on the number of messages in the incoming queue, is able to dynamically adjust the number of transcoding Amazon EC2 instances to meet customers' response time requirements.


 Valid XHTML 1.0 Transitional Valid CSS! WordPress