Hi, i will give a feedback how i tried to implement the graphicImageDynamic tag from the sandbox with facelets. It doesn't work for me and i don't know why. But i think it would be useful if this tag works, so i post my experiences with that tag:
1.) I implemented the tag: <s:graphicImageDynamic rendered="#{graphicImageDynamicBean.uploaded}" id="imageDisplay" imageRendererClass="#{graphicImageDynamicBean.imageRenderer}"/> 2.) I searched for the facelets definitions and found it. I implemented it in my web.xml. http://wiki.java.net/bin/view/Projects/FaceletsTaglibsMyfacesSandbox 3.) I copied the GraphicImageDynamicComponentHandler-class and implemented it in my project. 4.) I donwloaded the latest release from CVS and looked how the tag was implemented in the examples. So i copied following classes into my project and changed them (see at the end of this message) GraphicImageDynamicBean, UploadedImageRenderer I want to use just a static image, because i want to know how it works. I have an image only as a Hex-String and i want to render that. Length=4066, Content-Type=image/jpeg. I think i have implemented all well, but at deployment it nerves me with a class not found - exception. BUT THE COMPILED CLASS IS IN MY WAR! So that will be one of my problems. Then i wondered myself about the sandbox-taglib: <component-type>org.apache.myfaces.GraphicImageAjax</component-type> Is this an AJAX component??? What am i doing wrong?????? Thanx in Advance, Udo my exception: SCHWERWIEGEND: Error Loading Library: /WEB-INF/sandbox.taglib.xml java.io.IOException: Error parsing [jndi:/localhost/seam-booking/WEB-INF/sandbox.taglib.xml]: at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:395) at com.sun.facelets.FaceletViewHandler.initializeCompiler(FaceletViewHandler.java:279) at com.sun.facelets.FaceletViewHandler.initialize(FaceletViewHandler.java:179) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:413) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:23) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:174) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595) Caused by: org.xml.sax.SAXException: Error Handling [jndi:/localhost/seam-booking/WEB-INF/[EMAIL PROTECTED],87] <handler-class> at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:258) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:392) ... 30 more Caused by: java.lang.ClassNotFoundException: facelets.GraphicImageDynamicComponentHandler at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1338) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1187) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at com.sun.facelets.compiler.ReflectionUtil.forName(ReflectionUtil.java:55) at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.createClass(TagLibraryConfig.java:278) at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:205) ... 45 more 11:50:10,531 ERROR [STDERR] 08.04.2006 11:50:10 com.sun.facelets.compiler.TagLibraryConfig loadImplicit my web.xml: -------snip------------- <context-param> <param-name>facelets.LIBRARIES</param-name> <param-value>/WEB-INF/tomahawk.taglib.xml</param-value> <param-value>/WEB-INF/sandbox.taglib.xml</param-value> </context-param> -------snap------------- my sandbox.taglib.xml: <?xml version="1.0"?> <!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "http://java.sun.com/dtd/facelet-taglib_1_0.dtd"> <facelet-taglib> <namespace>http://myfaces.apache.org/sandbox</namespace> <tag> <tag-name>convertBoolean</tag-name> <converter> <converter-id>org.apache.myfaces.custom.convertboolean.BooleanConverter</converter-id> </converter> </tag> <tag> <tag-name>dojoInitializer</tag-name> <component> <component-type>org.apache.myfaces.DojoInitializer</component-type> <renderer-type>org.apache.myfaces.DojoInitializerRenderer</renderer-type> </component> </tag> <tag> <tag-name>fieldset</tag-name> <component> <component-type>org.apache.myfaces.Fieldset</component-type> <renderer-type> org.apache.myfaces.FieldsetRenderer </renderer-type> </component> </tag> <tag> <tag-name>graphicImageDynamic</tag-name> <component> <component-type>org.apache.myfaces.GraphicImageAjax</component-type> <renderer-type>org.apache.myfaces.GraphicImageAjaxRenderer</renderer-type> <handler-class>facelets.GraphicImageDynamicComponentHandler</handler-class> </component> </tag> <tag> <tag-name>inputSuggest</tag-name> <component> <component-type>javax.faces.HtmlInputText</component-type> <renderer-type>org.apache.myfaces.InputSuggest</renderer-type> </component> </tag> <tag> <tag-name>selectOneRow</tag-name> <component> <component-type>org.apache.myfaces.SelectOneRow</component-type> <renderer-type>org.apache.myfaces.custom.selectOneRow.SelectOneRowRenderer</renderer-type> </component> </tag> </facelet-taglib> my GraphicImageDynamicComponentHandler -class: package facelets; import com.sun.facelets.tag.MetaRuleset; import com.sun.facelets.tag.MethodRule; import com.sun.facelets.tag.jsf.ComponentConfig; import com.sun.facelets.tag.jsf.html.HtmlComponentHandler; public class GraphicImageDynamicComponentHandler extends HtmlComponentHandler { protected final static Class[] GET_BYTES_METHOD_SIG = new Class[0]; protected final static Class[] GET_CONTENT_TYPE_METHOD_SIG = new Class[0]; protected final static MethodRule getBytesMethodTagRule = new MethodRule("getBytesMethod", byte[].class, GET_BYTES_METHOD_SIG); protected final static MethodRule getContentTypeMethodTagRule = new MethodRule("getContentTypeMethod", String.class, GET_CONTENT_TYPE_METHOD_SIG); public GraphicImageDynamicComponentHandler(ComponentConfig tagConfig) { super(tagConfig); } protected MetaRuleset createMetaRuleset(Class type) { MetaRuleset m = super.createMetaRuleset(type); m.addRule(getBytesMethodTagRule); m.addRule(getContentTypeMethodTagRule); return m; } } my GraphicImageDynamicBean-class: public class GraphicImageDynamicBean { private UploadedFile _upImage; public UploadedFile getUpImage() { return _upImage; } public void setUpImage(UploadedFile upImage) { this._upImage = upImage; } public boolean isUploaded() { // return _upImage != null; return true; } public Class getImageRenderer() { return UploadedImageRenderer.class; } } my UploadedImageRenderer-class: package org.apache.myfaces.examples.graphicImageDynamic; import java.io.IOException; import java.io.InputStream; import javax.faces.context.FacesContext; import javax.faces.context.ResponseStream; import javax.faces.el.ValueBinding; import org.apache.myfaces.custom.dynamicResources.ResourceContext; import org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer; /** * @author Mathias Broekelmann * */ public class UploadedImageRenderer implements ImageRenderer { private GraphicImageDynamicBean _graphicImageDynamicBean; public void setContext(FacesContext facesContext, ResourceContext imageContext) throws IOException { ValueBinding vb = facesContext.getApplication().createValueBinding( "#{graphicImageDynamicBean}"); GraphicImageDynamicBean value = (GraphicImageDynamicBean) vb.getValue(facesContext); if (value == null) { throw new IllegalStateException("managed bean graphicImageDynamicBean not found"); } _graphicImageDynamicBean = value; } /** * @see org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer#getContentLength() */ public int getContentLength() { // return _graphicImageDynamicBean.isUploaded() ? (int)_graphicImageDynamicBean.getUpImage().getSize() : -1; return 4066; } /** * @see org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer#getContentType() */ public String getContentType() { // return _graphicImageDynamicBean.isUploaded() ? _graphicImageDynamicBean.getUpImage() // .getContentType() : null; return "image/jpeg"; } /** * @see org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer#renderImage(javax.faces.context.FacesContext, org.apache.myfaces.custom.graphicimagedynamic.ImageContext, java.io.OutputStream) */ public void renderResource(ResponseStream out) throws IOException { if (_graphicImageDynamicBean.isUploaded()) { // InputStream is = _graphicImageDynamicBean.getUpImage().getInputStream(); String hex = "FFD8FFE000104A46494600010100000100010000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232FFC00011080066006A03012200021101031101FFC4001B00000202030100000000000000000000000506030700010402FFC4003A100001030302050204030605050000000001020304000511122106133141512261147181911523A1073242B1C1D11625337292445273E1F1FFC4001B01000203010101000000000000000000000203000105040607FFC40029110002020201040201030500000000000001020011030421122231410513517191B1326181C1F0FFDA000C03010002110311003F00BBF462B34835269F7AC29DEA4A322D2335B2302BDE2B4A1EF5254E75AC246F5CCF3FE9246F53C864A9340AE53D9B61692FA88E728A13B77092AFE9FA8A186A09200904B9B97797A8051DC027734354A4B849041DF071E6B924BECCBB846255BB8A2948FA7FEAA6BADBA4DBE1A64C2381AFF312AF56AFBFCBAD0DDCD56F8C2AA075771F466CA6B4123BD430E7A266B484143A8FDE41F1E6A742D2E36169E86A5CCECB89F131471444D288C6C2A322A6C77AF045145484A76F35E748F153115AD3524966815B20019AE69AF2E3DBDF79BD216DB654350C8D8668143E2A796C85C8880A543214D1C7E87FBD5DC763D7C9914B20B99378DAD6CC72B88B5497356909D25001F7246D40A771A4D47E53F1A13AD389FF004D2B215F7CD03F8B448BA4A6647362B4EACAD4D2104EA24EF8237C6F5CB7E54416F31ADF05C2F20613AD18A0622AEE7A3C1F17AEAC15D49B8FB68E21FC4186D214528650A71D2EEEE2C0380079EBD7DBA026A296B62E17882A5A1C69D4092CA01E9CDC247D7D3A8D23DB5892988CA96F24940C38D058D4B237054904109CF7F38DB15E5574B8DC50A3F1ED32B66407A2B8B7348192A4AB71D09DC907A8E80770B3EE646D691C3909C7C8063140B0B264B6F15BA892824A139CFD68D4C8373723968C825B3FF73605295A7F6806DEC08E23EA4B49012A7318E83A104E71D3B5754BFDA4392195A52C202B1E9232403EF427228334FEBDBCCC1FA78FEF03CE8AB66E8CB5CF2DAD4541B7104EF8EC718AEFB44C4A9975A71785B654BCAB00E9D4704FDB140DFBC26E717E1DC6D2D3E824A16938C1ED8F150BB70369B84889CD0B473429CDC12A20023A9FF6E7E46A06F703E4B19C8CB8EBBA39B8EA10E21A2AF5AF3A479C56CEE4508B8B0FC8B5C39915CD4EE703AFEF75F1DF15E3F107E1BC639482509D6E6BCF53D81F6E9F4A3EAE67037C639A18CD9863A1AD64D41125B731AD68D88EA3C54D9A3B99CE8C8C5585112CB5A10E36A42D21485021408C822AB9E2616FE1DB9B0C3525C4A1C6CAD4D294484277031F3DF626840E28E208CDAA6B4B712DA54094BAA2B0B1EC0D735C2EF1AE73D976EACF343E8CBA1274A920F4D3E081DBFBD0B357137F5FE3F36ABF539B5FC08CF61F87B9A549412C2746B494A02750C907AF8C7EA2B2F8888DC6434C32D28B848321C1929C75273BD2B44BEB906D2E301AE6436DC7034E9187084EC7D23AECAEA2B96E7C62C048E52A3A0A87A836BCEE3000391B0D3FCBEE9390D54A0E464FB2FB4425780A836D4C3B4447A4ADC5A4499206025246773DBFA0AE662DAC4AB6261CF774A8ACB6D3CDED839DBE5D850B7AF93DA80A62DA996653993312D37A4249CE00DFD49C139073ED8CEFE33727EDCD3658E5A82794DB415B04000A4EFBEAC9567BF4AB37E63B57672E4CB46E8FBFF70CDB6D522DAEA605C2536438AC34F2919D43B0CF407E74C0BE1980980B752D871C2082A50DC7CBC556B278967429288B3DCD6D8243895AB6C8247A4F5EDF4A6CB0F14485A64C4E496CA521495ABA818CE77FFE6C6A0715551BB3B2C4F0DFAFA83AE36A8E5890A4B8E2567263841034A87CF3B1C8F277EB4AC1B75CBC290FB8D9E78217858D8050C0DFDBC669BAEE1E936C0FEB743CE0284290A4A90AC02474EE493EDF4A0379B6AE64054C7141B623B6A79A2D1042403E3B93B7CF0286ED666E7DB36AD76C3F69616965888D679A1B08294A501435103A8F3DE82DD2F909B8CCB4EB6B53E145B775104A0F639EE0E7CD2831C560CC8F15B79EE621010E3870A39246C803A1CF5EF44EF30DD8D1E7F3125C52C21E46A1D73B1FB6D54B7EE68682FD9DC4C231AEAB8D2F5F213CB53606869272A3D8E7A79A636DF4ADB4ACE125401C1232292956E751711094B5A5943292A0125795637E9F5AE25DBE66B56195119D8E834E5EAA9D1B1F109B043DD1A960BF6ABA5DADED28940612AC6948D2563CEF41AE76888C3A57314E87BB15AC003ED4D77CE2111E386EDAB654B3B1D63013F2CE01A54BA58E3DEED1326FC53AECD2D6A0864EA208E9E9EF9A17367C45E3CB902F538A58BDFE1A1C5680B8AFA90C32E969D7F195149C9C01D3B7EB441CE0D6AD780DC343AD1FE2527513F3CF7A09FB38BE474F13336F70A12DAD2E32877F894A51053ABB744E07CEADF75F10DEE52C0C647DB342454E6C39D5DD9C2837FC4AE2D56DBA4994EC78062B0C8253839C800EDE9FD6883F0FF01B9B082F29E050A75DC8D93818D80F7ED4D2E4045D9F57C132528CE92F23657F4C57A7787A3C16D521D0AE6018E6BCE6B5A8F603B0A3A153BDF752FA4F02BC4AEB87B845EE21E279326F081F0CB25D119432A482720157F0F4E82A1E2C8B6E6FF680D263A96151DB02436DA494A800545381D4E9C78EB9A6E55D1AE19616E25465CE782821A6F7D6E1DC247B0006F55719B74B7DF3E29C71ED4EBC5C794E6A090E28602F18ED9F1B8DB7A83998DB8A12C278FCC7C525E9DC3864E5687186D41B584941D58C6BED9CE07D303B50B6E24FB9DADC5C779C941AD215AD6773E319C1C0C7DA8EC579A7AD4875B53C44E569521D0525202402529C74E9B93DCF9DA7E05893E3D9DF61B6995ACBEAD654ACE0EC318FA50A79AA9DBA8B88E3190A8247E62632A810662CAE325995904BC5AF56A07AEE3AE7BD33AA7377EB7729450890941E52D3D1C1DC63B7F7A277EE119F2D0243A865206492D20E7E477DEABBBF596EB0E3B6988E1E6A5649D04A15823B66ACA91EE76E46C431FD983C8E684B17876E7165CA7E4ADB70B8A6DB4A90119214010451FF00888C7FE99DFF0085549C3122F165962535394F13853F124A756B1FEEC9C1F7FBD195F135CDC714B10D785124618591BFD2AC3902711CBF6B13447F99E60710393E6F29119D756A0400A4E76FBED4CFC3D02642E218EE3E421B7F5214D206C3D24E7EE29B6C7C311E2A43CA6407C8F52B6C9F9E2BBAE111B6A430E818E52B24FD08FEB53A4D7718DD8F93C7918E2C6BC115288E33E01916CBEC8B8D89475A9CE686738524EACE507BEFDBF9D39C5E2963882D0C3C167F128A0896D018D2527B83E715BE27B9EBBA3C54A296586C6909232B709C7B9C0DBB7538A44B0F05CB6EFEAB8C8548111475270E72DC733B9D583B0CEC73B9F03B01EF056E67AE229907D22C9F3F812D6E1DE256E2DB97AD81A039BBE957A7D59C1DFA6F81535F6F898F6F5AE5F2DC4AD04101490956DBE37F5637D81CFE94AEF391E5A7E01C52DA4BA396396B1A771FBBD3E78A42160E225C876DA5F4FE1E85908716751233D8751EE3615415AA898FD8D3C9608164F9FF00BD461B63AB899BB4D21F90F02104EC96D03A607DA89AAF08BBC06CB4DB6CEB1EB49590A511B6D8EDD7AD0A9ADA94A6A011F965B39D3B9040DB1F5C50E66D118BC86E64A5B011D5684E750FE9F6A8090684F429A98863008BA9BE217AE2C4744B44D75D4B3201530F614A4150C652A1BE0EDB536F01F13C08525E7263E10890DA578C674A864107DE9267B41B75516DC5F94D152753850718073E3F5A36AE1C7DEB0AEE4DA79321595ABC2FE83CD4B37DB33F6B5531AB2E3F07D47CBB71D457F98D41429E404952D64694A463C9A4A9726E33511A43125A4992E29A70247A824018DC288CF4D88D89EF9A5F83722C5B1D95360ADD88E00856D8513A86C3DBC9FA77A34CC029853EE16E754E38A585A50B1B36003B0FA1F7A8093C999185066C8B8D3FA7DCD498EED8AEBF190187B5B88D2412085ABB03F7FB51944553ADA5C37975A2B0145BD47D19EDB9ED4B8ABF3CEB0DAA69795A1412AC0037EB9C77AE91786F1E91B76EBFDAAC38078334337C0F59EA4FE65D169BCC29139E84D3C14A41F4E723293B8C7DE87716DE62C260C6E727E256329403BE3CD7247B03AB425524492E360018230AC0F39181D31DC63E9432F9C190A6DB9F7111E7A2E0A185178974B833D323207B138F7A350C4F3C09E770665570CF146D96F7EE7244C79F42D0D255C94ABAEBDF7F6FD7A0A9130EF93F96CA24B4964820E93B9AF5C3F756586C5BA4971B7DA7940153471A00F492AF3B907DD3EF4D566650E3E2321690492E214075F4907F9E69CB8F588E1E7A5D3DAC6988BE2A3EE269E1C5B2A633256B515A7510B1B6083F7DA9891263B7714345B3F988D47D24F5CF7A2EEDBBE1E56A79E4A8A7493D7B7CE906E773468725C24BF2248CB486DB609F48380AD47A67734D64D65BA31B9F7D1943643EA169D0A444E228B3A3252E328565446F838C6E3DC5333976B13ADE5E89AA41EA80807EB9A44B4719322E2985758AFB01E01B6CA53A95AD4348C81F33D29A6E7F85C0679F2E4B6C6E06BDC0F18DFDF14031615BA7883B9AF9C805BC7B1C7EF259ED42B84521F5B316127D4B6DB5005433FC476DBCD2B717F162624211EDEDBAC450B0D2A46E95249191A463A7935ABD4E10E02DC59D6D286127B007CE3E74A17EBBD92E113420497A4A0E40D2909D58C63719ED9FE7E2985302D806CCE2DCDAC6A0E347E7F5845AE20902EB051F99223BCAC3DCC8B9696ACE429233B81FAE33BF67F8177B6BA994DC98EEB0A731A8A104A0103194F7C6D54CC6E2065129B71E84E20AFD0E1C800109D3E91F51D7A0DAAEDB1428B7D84A7233E10B48D241411F2383DB14BFAB003CB545E81D71659F98ACFB70D0F2D02630D2903D2B71B275A3B6DE46D4BEB533AD5FE6320EFD52D1C1F96F5664F868B4AB121D8EA75C3F96D049255F4F15CE03C464426B1FF8C7F7AE6C8A97DAD3D1E3DD045A9B12CAD64027C528F10C9946E26DB1AEB363BCA8EA94B700414A1B49C1D200492AC903738C66B2B29CD3E7E654926EA8778AD98D1654C75944AD2E2A48014E1DC904024119FBD1DE135CD679D31535CD487DDE5A001A52124A71B83D4E6B2B2B83380884AC2C4ECA78307F1171BCF944C78C9433AF5EB52C6A2AC1C1F18AACEE777BA7C42D97659C1393CBF4E6B2B29DADDDC987932BBF2C64969BBB50AF306E423842228D2B4A372B242B2ADCF5DFF953271F7113B78B6DB986D4E06164BA439D7A0091DFA026B2B29AE07D8A623DCB7B8238620A382E1225A04A2F3614A2EEE307A01F2A2DFE08E1B2AD46D11B38C7EED65653C000F10A795F0370D3830BB44750D65CC11FC47193FA0AEE470FDB9A46869A5358180A6D652A18DB623A5656551507C8901AF1244D96025E53DC9CBAAFDE714A2A51F993BD750830B1FE9AFF00E5595954517F11C36328E0319FFFD9"; byte [] bts = convertHexToByteArray(hex); InputStream is = null; is.read(bts); try { byte[] buffer = new byte[1024]; int len = is.read(buffer); while (len != -1) { out.write(buffer, 0, len); len = is.read(buffer); } } finally { is.close(); } } } private byte [] convertHexToByteArray(String hex) { byte[] bts = new byte[hex.length() / 2]; for (int i = 0; i < bts.length; i++) { bts[i] = (byte) Integer.parseInt(hex.substring(2*i, 2*i+2), 16); } return bts; } } Ihr Traumpartner ist nur einen Klick entfernt. 1 Million Singles warten auf Sie in Deutschlands beliebteste Partnerboerse: http://singles.freenet.de/index.html?pid=11512