Java 使用jersey在浏览器中显示Blob

Java 使用jersey在浏览器中显示Blob,java,web-services,rest,jersey,blob,Java,Web Services,Rest,Jersey,Blob,我一直得到image==null!从服务器。我只是想把我上传到mysql的图像显示为fileinputstream中的一个blob。在数据库中,它显示为bufferedinputstream供参考。我把它硬编码,看能不能得到结果。你们能看到我做错了什么吗 @Path("/photo" ) public class DisplayPhoto { @GET @Path("{id}") @Produces("image/*") public Response post(@PathParam("i

我一直得到image==null!从服务器。我只是想把我上传到mysql的图像显示为fileinputstream中的一个blob。在数据库中,它显示为bufferedinputstream供参考。我把它硬编码,看能不能得到结果。你们能看到我做错了什么吗

@Path("/photo" )
public class DisplayPhoto { 

@GET
@Path("{id}")
 @Produces("image/*")
public Response post(@PathParam("id") String id) {
    Connection con = connection();

    BufferedImage image = null;
    try {
        image = ImageIO.read( getPhoto(con).getBinaryStream() );
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



    ByteArrayOutputStream baos2 = new ByteArrayOutputStream();

    try {
        ImageIO.write( image, "jpg", baos2 );
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }




    return Response.ok(baos2.toByteArray()).build();

}



public Connection connection(){
    Connection con = null;

    try {// set up driver for database
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }


    try {
        con = DriverManager.getConnection("jdbc:mysql://aa1c9da17owdhky.cotr7twg0ekb.us-west-2.rds.amazonaws.com/test","nightskycode","uocb4t111");
    //  boolean reachable = con.isValid(10);// check for connection to DB


    } catch (SQLException e) {
        e.printStackTrace();
        System.out.println("No go!3");
    }
    return con;
  }

public Blob getPhoto(Connection con){

    Blob photo = null;
    Statement stmt = null;
    ResultSet rs = null;


    try {
        stmt = con.createStatement();
        rs = stmt.executeQuery("Select photo from photos where photo_id = 3");

        if (stmt.execute("Select photo from photos where photo_id = 3")) {
            rs = stmt.getResultSet();

            while (rs.next()) { // results here
           photo =  rs.getBlob("photo");
            System.out.println(rs.getString("photo")); }

        }

    } 
    catch (SQLException ex){
        // handle any errors
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
    }
    return photo;

}






**here is the trace**

Dec 22, 2013 9:29:35 PM org.apache.catalina.core.StandardWrapperValve invoke
严重:路径为[/restService]的上下文中Servlet[ServletAdapter]的Servlet.service()引发异常 java.lang.IllegalArgumentException:image==null! 在javax.imageio.ImageTypeSpecifier.CreateFromRenderImage(未知源) 位于javax.imageio.imageio.getWriter(未知源) 在javax.imageio.imageio.write(未知源) 位于restService.status.DisplayPhoto.post(DisplayPhoto.java:63) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 位于com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker.\u dispatch(AbstractResourceMethodDispatchProvider.java:205) 位于com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 位于com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 位于com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 位于com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 位于com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 位于com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 位于com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1542) 位于com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1473) 位于com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) 位于com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) 在com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)上 位于com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540) 位于com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) 位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) 位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
在java.lang.Thread.run(未知源代码)

中,System.out.println(rs.getString(“photo”);中没有任何内容?尝试System.out.println(照片);结果仍然为空吗?不,我有一个结果,结果是:java.io。BufferedInputStream@26a1c72bhave您尝试检索其他内容以检查与DB的连接是否正常工作?正常工作,我正在获取java.io。BufferedInputStream@26a1c72b从我的数据库。数据库连接正常