# JSF:  Servlet für Bilder: Verbindung zu Spring Service ?



## Nabble (8. Feb 2008)

Ich habe ein Problem. Verwende die JBoss RichFaces, Spring und Hibernate und das meiste klappt ganz gut, bis auf das ANzeigen von Bildern einer jsp Seite. Vorher hatte ich die Tomahawk Komponenten benutzt, und da ging meine bisherige Lösung. Mit den RichFaces erhalte ich allerdings folgendes Problem wenn eine jsp Seite aufrufe, die images in der Form

Auszug data.jsp

```
<t:graphicImage url="viewimage.jsp?index=0&size=thumbnail"/>
```

enthält.

viewimage.jsp


```
<%@page contentType="image/jpg"%>
<%@page import="de....PictureBean,
	javax.faces.context.FacesContext
"%>
<%
	FacesContext fc = FacesContext.getCurrentInstance();
	PictureBeanLogic bean = (PictureBean)  fc.getApplication().createValueBinding("#{PictureBean}").getValue(fc);
	bean.viewPicture("index", "size");
%>
```


Auszug PictureBeanLogic


```
public final void viewPicture (String attributeIndex, String attributeSize) {

   ...
    byte[] data = getPictureData(index, size);
    FacesContext faces = FacesContext.getCurrentInstance();
    HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();
    response.setContentType("image/jpg");

    try {
      response.getOutputStream().write(data);
    } catch (IOException e) {
      e.printStackTrace();
    }
    faces.responseComplete();
  }
```


Fehler:


```
java.lang.IllegalStateException: Servlet response already use stream, Writer not possible
	at org.ajax4jsf.webapp.FilterServletResponseWrapper.getWriter(FilterServletResponseWrapper.java:226)
	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
...
```



Nun möchte ich ein eigenes Servlet schreiben, welches die Bilder ähnlich wie in viewPicture handelt. Aber: 
Wie kann ich nun den Bezug zu einem Springservice herstellen, der die DB Anfragen übernimmt. 
Zum Beispiel brauche ich darin soetwas wie ImageService.getPicture(...).


```
public class ImageServlet extends HttpServlet {

	 
	  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {

    	
    	 Integer index  = Integer.parseInt(request.getParameter("index"));
    	 String size = request.getParameter("size");
    	 
    	
    	 //irgendwie die Daten über einen SpringService bekommen ??
    	
    	 byte[] data = getPictureData(index, size);
    	 
    	 
    	    FacesContext faces = FacesContext.getCurrentInstance();
    	    
    	    response.setContentType(CONTENT_TYPE);
    	  
    	    r

    	    try {
    	      response.getOutputStream().write(data);
    	      faces.responseComplete();
    	    } catch (Exception e) {
    	       //
    	    }
    	    
   }
```


Hope anybody can help!


----------



## Guest (13. Feb 2008)

Niemand eine Ahnung :-(


----------

