Matthew, this seems like a glassfish question... if you can "mount" local system dirs in glassfish as web dirs, for example: alternatedocroot_1 from=/uploads/* dir=/Users/insane/path/under/netbeans/glassfish/domain1/uploads/Videos
would you access that content using http://www.mysite.com/uploads/* Again, I'm not sure how that mounting rule in glassfish works, it might be relative to your app root, but it seems it should work and just be treated as a normal path -- in the case of the previous fellow I understood his situation to be that he *had* to host resources out of a system directory that wasn't web-addressable. I believe in your case they are web addressable if that glassfish feature mounts them up as such? -R On Fri, Jan 29, 2010 at 12:17 PM, Matthew J <[email protected]> wrote: > Question, as I am dealing with a similar issue, except I save my file to my > glassfish directory (ie: glassfish/domains/domain1/uploads/Videos/...). I > can't seem to find the url though I have tried many different types of > urls... > > For the record > > ((WebApplication)WebApplication.get()).getServletContext().getRealPath(newFile.getCanonicalPath()) > returns: > > /Users/msj121/NetBeansProjects/WebBuilder/dist/gfdeploy/WebBuilder/WebBuilder-war_war/Applications/Programs/NetBeans/sges-v3/glassfish/domains/domain1/uploads/Videos/... > > > btw, for those using Glassfish you can have urls to physical hard drive > space even not in the context root by using an alternatedocroot (ie: > "alternatedocroot_1 from=/uploads/* dir=/"). > > > I assume my directory is in the context root and I should be able to find > it, no? > > > On 29-Jan-10, at 12:47 AM, Ernesto Reinaldo Barreiro wrote: > > Hi Riyad, >> >> I didn't get offended by your message... which otherwise raised a very >> valid >> issue. >> >> Cheers, >> >> Ernesto >> >> On Thu, Jan 28, 2010 at 5:26 PM, Riyad Kalla <[email protected]> wrote: >> >> Ernesto, >>> >>> Sorry about that -- I didn't mean to imply your impl was back, that was >>> more >>> directed at Francois along the lines of "that's a lot of overhead, are >>> you >>> sure you need to do that?" -- but now that I understand what his use-case >>> is >>> (saw his last reply about /usr/ext/img/<IMAGES HERE>) I get it. I was >>> thinking they were under /webapp/images. >>> >>> I'll go back to sitting in my corner ;) >>> >>> -R >>> >>> On Wed, Jan 27, 2010 at 9:54 PM, Ernesto Reinaldo Barreiro < >>> [email protected]> wrote: >>> >>> Sure it is overhead but he wanted to serve images from a folder not >>>> under application >>>> context root directory... Then, you have to serve them somehow? The >>>> >>> options >>> >>>> I see are >>>> >>>> 1-A dedicated servlet? >>>> 2-With Wicket... and thats what the code shows... and for sure it can be >>>> done in a simpler way... >>>> >>>> A would try to use 1. As then Wicket would not have to serve the images. >>>> >>>> Regards, >>>> >>>> Ernesto >>>> >>>> On Wed, Jan 27, 2010 at 9:43 PM, Riyad Kalla <[email protected]> wrote: >>>> >>>> This seems like adding a large amount of overhead to an image-heavy >>>>> >>>> site >>> >>>> (e.g. image blog or something), I thought I read in Wicket in Action >>>>> >>>> that >>> >>>> WicketFilter ignored HTTP requests for non-wicket resources now and >>>>> >>>> passed >>>> >>>>> them through to the underlying server to handle avoiding the need to >>>>> >>>> remap >>>> >>>>> your wicket URLs to something like /app/* so you could have /images and >>>>> other resources under root and not have them go through the filter. >>>>> >>>>> Is this not the case? >>>>> >>>>> On Wed, Jan 27, 2010 at 1:38 PM, Ernesto Reinaldo Barreiro < >>>>> [email protected]> wrote: >>>>> >>>>> Hi Francois, >>>>>> >>>>>> Following example works..... >>>>>> >>>>>> 1-Create this class anywhere you want need. >>>>>> >>>>>> package com.antilia.demo.manager.img; >>>>>> >>>>>> import java.io.ByteArrayOutputStream; >>>>>> import java.io.File; >>>>>> import java.io.FileInputStream; >>>>>> import java.io.IOException; >>>>>> import java.io.InputStream; >>>>>> import java.io.OutputStream; >>>>>> >>>>>> import org.apache.wicket.AttributeModifier; >>>>>> import org.apache.wicket.markup.html.image.Image; >>>>>> import >>>>>> >>>>> org.apache.wicket.markup.html.image.resource.DynamicImageResource; >>>> >>>>> import org.apache.wicket.model.Model; >>>>>> import org.apache.wicket.protocol.http.WebApplication; >>>>>> import org.apache.wicket.protocol.http.WebRequestCycle; >>>>>> import org.apache.wicket.util.file.Folder; >>>>>> >>>>>> /** >>>>>> * >>>>>> * @author Ernesto Reinaldo Barreiro ([email protected]) >>>>>> * >>>>>> */ >>>>>> public abstract class MountedImageFactory { >>>>>> >>>>>> >>>>>> static int BUFFER_SIZE = 10*1024; >>>>>> /** >>>>>> * Copies one stream into the other.. >>>>>> * @param is source Stream >>>>>> * @param os destination Stream >>>>>> * */ >>>>>> static public void copy(InputStream is, OutputStream os) throws >>>>>> >>>>> IOException >>>>> >>>>>> { >>>>>> byte[] buf = new byte[BUFFER_SIZE]; >>>>>> while (true) { >>>>>> int tam = is.read(buf); >>>>>> if (tam == -1) { >>>>>> return; >>>>>> } >>>>>> os.write(buf, 0, tam); >>>>>> } >>>>>> } >>>>>> public static byte[] bytes(InputStream is) throws IOException { >>>>>> ByteArrayOutputStream out = new ByteArrayOutputStream(); >>>>>> copy(is, out); >>>>>> return out.toByteArray(); >>>>>> } >>>>>> private static ImageFromFolderWebResource dynamicResource; >>>>>> private static class ImageFromFolderWebResource extends >>>>>> DynamicImageResource { >>>>>> private static final long serialVersionUID = 1L; >>>>>> >>>>>> private File folder; >>>>>> public ImageFromFolderWebResource(File folder, String mountPoint) { >>>>>> this.folder = folder; >>>>>> WebApplication.get().getSharedResources().add(mountPoint, this); >>>>>> WebApplication.get().mountSharedResource(mountPoint, >>>>>> "org.apache.wicket.Application/"+mountPoint); >>>>>> } >>>>>> @Override >>>>>> protected byte[] getImageData() { >>>>>> try { >>>>>> String name = >>>>>> >>>>> WebRequestCycle.get().getRequest().getParameter("name"); >>> >>>> return bytes(new FileInputStream(new >>>>>> >>>>> File(getFolder().getAbsolutePath() >>> >>>> + >>>> >>>>> System.getProperty("file.separator")+(name)))); >>>>>> } catch (Exception e) { >>>>>> //TODO: do this properly >>>>>> return null; >>>>>> } >>>>>> } >>>>>> >>>>>> public File getFolder() { >>>>>> return folder; >>>>>> } >>>>>> } >>>>>> /** >>>>>> * @return Folder from where images will be retrieved. >>>>>> */ >>>>>> protected abstract Folder getFolder(); >>>>>> /** >>>>>> * @return the URL to mount the dynamic WEB resource.e.g. >>>>>> */ >>>>>> protected abstract String getMountPoint(); >>>>>> public Image createImage(String id, final String imageName) { >>>>>> if(dynamicResource == null) >>>>>> dynamicResource = new ImageFromFolderWebResource(getFolder(), >>>>>> getMountPoint()); >>>>>> return new Image(id) { >>>>>> private static final long serialVersionUID = 1L; >>>>>> >>>>>> @Override >>>>>> protected void onBeforeRender() { >>>>>> String path = WebRequestCycle.get().getRequest().getURL(); >>>>>> path = path.substring(0, path.indexOf('/')); >>>>>> add(new AttributeModifier("src",true, new >>>>>> Model<String>("/"+path+"/"+getMountPoint()+"?name="+imageName))); >>>>>> super.onBeforeRender(); >>>>>> } >>>>>> }; >>>>>> } >>>>>> } >>>>>> >>>>>> 2- Create a test page. >>>>>> >>>>>> import org.apache.wicket.markup.html.WebPage; >>>>>> import org.apache.wicket.markup.html.image.Image; >>>>>> import org.apache.wicket.util.file.Folder; >>>>>> >>>>>> /** >>>>>> * @author Ernesto Reinaldo Barreiro ([email protected]) >>>>>> * >>>>>> */ >>>>>> public class TestPage extends WebPage { >>>>>> >>>>>> private static final MountedImageFactory IMAGE_FACTORY = new >>>>>> MountedImageFactory() { >>>>>> @Override >>>>>> protected Folder getFolder() { >>>>>> return new Folder("C:/temp/images"); >>>>>> } >>>>>> @Override >>>>>> protected String getMountPoint() { >>>>>> return "test"; >>>>>> } >>>>>> }; >>>>>> /** >>>>>> * >>>>>> */ >>>>>> public TestPage() { >>>>>> Image img = IMAGE_FACTORY.createImage("img", "test.png"); >>>>>> add(img); >>>>>> } >>>>>> } >>>>>> >>>>>> and the HTML markup >>>>>> >>>>>> <html xmlns:wicket="org.apache.wicket"> >>>>>> <head></head> >>>>>> <body> >>>>>> <img wicket:id="img" alt="Test"/> >>>>>> </body> >>>>>> </html> >>>>>> >>>>>> 3- If you place a "test.png" on your "C:/temp/images" then you should >>>>>> >>>>> be >>>> >>>>> able to see the image when you hit the page. >>>>>> >>>>>> Hope you can adapt this to your needs? >>>>>> >>>>>> Regards, >>>>>> >>>>>> Ernesto >>>>>> >>>>>> 2010/1/27 François Meillet <[email protected]> >>>>>> >>>>>> Thank for yours posts. >>>>>>> I try the solutions, but I can't figure out how to serve images as >>>>>>> >>>>>> static >>>>>> >>>>>>> images. >>>>>>> F. >>>>>>> >>>>>>> Le 27 janv. 2010 à 16:10, Thomas Kappler a écrit : >>>>>>> >>>>>>> On 01/27/10 15:57, Jonas wrote: >>>>>>>> >>>>>>>>> Have you tried the following: >>>>>>>>> >>>>>>>>> WebComponent image = new WebComponent("someWicketId"); >>>>>>>>> image.add(new SimpleAttributeModifier("src", "http:// >>>>>>>>> >>>>>>>> .....jpg")); >>> >>>> add(image); >>>>>>>>> >>>>>>>>> with markup >>>>>>>>> >>>>>>>>> <img wicket:id="someWicketId" /> >>>>>>>>> >>>>>>>>> >>>>>>>>> that should work just fine... >>>>>>>>> >>>>>>>>> if you cannot hardcode the image url, you can use the following >>>>>>>>> instead of SimpleAttributeModifier >>>>>>>>> image.add(new AttributeModifier("src", true new >>>>>>>>> AbstractReadOnlyModel<String>() { >>>>>>>>> public String getObject() { >>>>>>>>> String url = ... (fetch the image url from anywhere >>>>>>>>> >>>>>>>> else) >>> >>>> // e.g. '/xxx/yyyy/image893748.png' >>>>>>>>> return url; >>>>>>>>> } >>>>>>>>> )); >>>>>>>>> >>>>>>>> >>>>>>>> Or, maybe a bit nicer, encapsulate it into a component and let >>>>>>>> >>>>>>> the >>> >>>> URI >>>>> >>>>>> come from a Model, as usual in Wicket: >>>>>>> >>>>>>>> >>>>>>>> class ExternalImageUri >>>>>>>> extends WebComponent >>>>>>>> { >>>>>>>> public ExternalImageUri(String id, IModel<String> uri) >>>>>>>> { >>>>>>>> super(id, uri); >>>>>>>> add(new AttributeModifier("src", true, uri)); >>>>>>>> } >>>>>>>> >>>>>>>> @Override >>>>>>>> protected void onComponentTag(ComponentTag tag) >>>>>>>> { >>>>>>>> super.onComponentTag(tag); >>>>>>>> checkComponentTag(tag, "img"); >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> This in the Wiki at >>>>>>>> >>>>>>> http://cwiki.apache.org/WICKET/how-to-load-an-external-image.html. >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- Thomas >>>>>>>> >>>>>>>> >>>>>>>> 2010/1/27 François Meillet<[email protected]>: >>>>>>>>> >>>>>>>>>> Hi Wicketers, >>>>>>>>>> >>>>>>>>>> I have a directory, /xxx/images with uploaded images, which is >>>>>>>>>> >>>>>>>>> not >>>> >>>>> under the application context root directory. >>>>>>> >>>>>>>> How can I serve them as static images ? >>>>>>>>>> >>>>>>>>>> I tried the StaticImage class I found in the forum ( >>>>>>>>>> >>>>>>>>> http://old.nabble.com/Plain-IMG-src-urls-td21547371.html#a21547543 >>>>>>> ) >>>>>>> >>>>>>>> but it doesn't work for me. It just work if the image files are >>>>>>>>>> >>>>>>>>> under >>>>> >>>>>> the context root directory. >>>>>>> >>>>>>>> >>>>>>>>>> Thanks for your help. >>>>>>>>>> >>>>>>>>>> François >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> --------------------------------------------------------------------- >>>>> >>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> --------------------------------------------------------------------- >>>>> >>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> ------------------------------------------------------------------- >>> >>>> Thomas Kappler [email protected] >>>>>>>> Swiss Institute of Bioinformatics Tel: +41 22 379 51 89 >>>>>>>> CMU, rue Michel Servet 1 >>>>>>>> 1211 Geneve 4 >>>>>>>> Switzerland http://www.uniprot.org >>>>>>>> >>>>>>>> ------------------------------------------------------------------- >>> >>>> >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>> >>>>> To unsubscribe, e-mail: [email protected] >>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>> >>>>>>>> >>>>>>> François Meillet >>>>>>> [email protected] >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> --------------------------------------------------------------------- >>> >>>> To unsubscribe, e-mail: [email protected] >>>>>>> For additional commands, e-mail: [email protected] >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
