# HG changeset patch # User casties # Date 1308323262 -7200 # Node ID fe0a111cc8f5d4d26a646f6b747a0858477e3601 # Parent 55bc70b1cb1855109777e3bd87d670316c43730a server creates tgcrud port in constructor. client takes external server url. diff -r 55bc70b1cb18 -r fe0a111cc8f5 client/src/main/java/info/textgrid/middleware/digilib/clients/cli/DigilibCli.java --- a/client/src/main/java/info/textgrid/middleware/digilib/clients/cli/DigilibCli.java Thu Jun 16 18:39:32 2011 +0200 +++ b/client/src/main/java/info/textgrid/middleware/digilib/clients/cli/DigilibCli.java Fri Jun 17 17:07:42 2011 +0200 @@ -17,7 +17,7 @@ /** * @author casties - * + * */ public class DigilibCli { @@ -25,8 +25,9 @@ * @param args */ public static void main(String[] args) { - if (args.length != 4) { - System.err.println("use: DigilibCli SID URI QUERY FILENAME"); + if (args.length < 4) { + System.err + .println("use: DigilibCli SID URI QUERY FILENAME [SERVERURL]"); System.exit(1); } String sid = args[0]; @@ -35,7 +36,12 @@ String filename = args[3]; URL serverUrl = null; try { - serverUrl = new URL("http://localhost:8080/digilibservice-service/service?wsdl"); + if (args.length > 4) { + serverUrl = new URL(args[4]); + } else { + serverUrl = new URL( + "http://localhost:8080/digilibservice-service/service?wsdl"); + } } catch (MalformedURLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); @@ -57,22 +63,24 @@ System.out.println("Done."); } - public static byte[] getScaledImage(String sid, String uri, String query, URL serverUrl) { + public static byte[] getScaledImage(String sid, String uri, String query, + URL serverUrl) { DigilibService service = new DigilibService(serverUrl); DigilibServicePortType port = service.getDigilibServicePort(); String logParam = null; - // Holder for return data + // Holder for return data Holder mimeType = new Holder(); Holder imageData = new Holder(); Holder width = new Holder(); Holder height = new Holder(); // call service -- fills Holder - port.getScaledImage(sid, uri, query, logParam, mimeType, imageData, width, height); - System.out.println("mimeType="+mimeType.value); - System.out.println("imageData="+imageData.value); - System.out.println("width="+width.value); - System.out.println("height="+height.value); + port.getScaledImage(sid, uri, query, logParam, mimeType, imageData, + width, height); + System.out.println("mimeType=" + mimeType.value); + System.out.println("imageData=" + imageData.value); + System.out.println("width=" + width.value); + System.out.println("height=" + height.value); return imageData.value; } - + } diff -r 55bc70b1cb18 -r fe0a111cc8f5 service/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java --- a/service/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java Thu Jun 16 18:39:32 2011 +0200 +++ b/service/src/main/java/info/textgrid/middleware/digilib/services/scaler/Scaler.java Fri Jun 17 17:07:42 2011 +0200 @@ -33,155 +33,168 @@ import digilib.servlet.DigilibConfiguration; import digilib.servlet.DigilibRequest; -@WebService(targetNamespace = "http://textgrid.info/namespaces/middleware/digilib/services/DigilibService", - serviceName="DigilibService", portName="DigilibServicePort", - endpointInterface="info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibServicePortType") +@WebService(targetNamespace = "http://textgrid.info/namespaces/middleware/digilib/services/DigilibService", serviceName = "DigilibService", portName = "DigilibServicePort", endpointInterface = "info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibServicePortType") public class Scaler implements DigilibServicePortType { + private TGCrudService_Service tgcrudService; + private TGCrudService tgcrud; + private String tgcrudServerUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; + + /** + * CXF calls this constructor just once at service start time... (says + * Stefan Funk) + */ + public Scaler() { + System.out.println("digilibservice Scaler starting..."); + // Get TG-crud service. + tgcrudServerUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; + createTgCrudService(); + } + + /** + * + */ + protected void createTgCrudService() { + URL location = null; + try { + location = new URL(tgcrudServerUrl); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.out.println("TG-crud WSDL location: " + location); + tgcrudService = new TGCrudService_Service(location); + tgcrud = tgcrudService.getTGCrudPort(); + // use MTOM + BindingProvider bindingProvider = (BindingProvider) tgcrud; + SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding(); + binding.setMTOMEnabled(true); + } + @Override public void getScaledImage(String sessionId, String uri, String query, String logParameter, Holder mimeType, Holder imageData, Holder width, Holder height) { - System.out.println("getScaledImage! sid="+sessionId+" uri="+uri+" log="+logParameter); + System.out.println("getScaledImage! sid=" + sessionId + " uri=" + uri + + " log=" + logParameter); + + if (tgcrud == null) { + // Create TG-crud service stub. + createTgCrudService(); + } + + // Create holders. + Holder metadataHolder = new Holder(); + Holder dataHolder = new Holder(); - // Get TG-crud service. - String serverUrl = "http://textgrid-ws3.sub.uni-goettingen.de/tgcrud/TGCrudService?wsdl"; // p.getProperty("crud_serverUrl"); - URL location = null; + // Start #READ operation. try { - location = new URL(serverUrl); - } catch (MalformedURLException e) { + String theSessionId = sessionId; + String theLogParameter = logParameter; + String theUri = uri; + String mode = "digilib"; + long startTime = System.currentTimeMillis(); + tgcrud.read(theSessionId, theLogParameter, theUri, metadataHolder, + dataHolder); + System.out.println(Long.toString(System.currentTimeMillis() + - startTime) + + " ms"); + System.out.println("READ: Title=" + + metadataHolder.value.getObject().getGeneric() + .getProvided().getTitle().get(0)); + InputStream istream = dataHolder.value.getInputStream(); + String mt = metadataHolder.value.getObject().getGeneric() + .getProvided().getFormat(); + System.out.println("Stream=" + istream.toString() + " type=" + mt); + if (mode.equalsIgnoreCase("digilib")) { + // try scaling + DigilibConfiguration dlConfig = new DigilibConfiguration(); + DigilibRequest dlReq = new DigilibRequest(); + dlReq.setWithParamString(query, "&"); + ImageJobDescription job = ImageJobDescription.getInstance( + dlReq, dlConfig); + ImageCacheStream imgStream = new ImageCacheStream(istream, mt); + System.out.println("iis=" + imgStream.getImageInputStream()); + ImageLoaderDocuImage img = new ImageLoaderDocuImage(); + // reuse reader for stream input + img.reuseReader = true; + // identify image size + System.out.println("Identifying..."); + img.identify(imgStream); + job.setDocuImage(img); + job.setInput(imgStream); + // use image worker + ImageWorker digilib = new ImageWorker(dlConfig, job); + System.out.println("Scaling with " + digilib); + digilib.call(); + System.out.println(Long.toString(System.currentTimeMillis() + - startTime) + + " ms"); + // save image to buffer + ByteArrayOutputStream ostream = new ByteArrayOutputStream(); + img.writeImage("image/jpeg", ostream); + System.out.println("written in " + + (System.currentTimeMillis() - startTime) + " ms"); + // set buffer in Holder + imageData.value = ostream.toByteArray(); + mimeType.value = "image/jpeg"; + width.value = img.getWidth(); + height.value = img.getHeight(); + System.out.println("output set."); + + /* + * save to file File f = new File("/tmp/tgimg.jpg"); + * OutputStream ostream = new FileOutputStream(f); + * img.writeImage("image/jpeg", ostream); + * System.out.println(Long.toString(System.currentTimeMillis() - + * startTime) + " ms"); + */ + } else { + // try to copy to file + File f = new File("/tmp/tgimg.img"); + OutputStream ostream = new FileOutputStream(f); + byte[] data = new byte[1024]; + int l = istream.read(data); + while (l > -1) { + ostream.write(data, 0, l); + l = istream.read(data); + } + ostream.close(); + System.out.println(Long.toString(System.currentTimeMillis() + - startTime) + + " ms"); + System.out.println("Done writing " + f); + } + } catch (ObjectNotFoundFault e) { + // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), + // e.getClass().getSimpleName())); + e.printStackTrace(); + } catch (MetadataParseFault e) { + // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), + // e.getClass().getSimpleName())); + e.printStackTrace(); + } catch (IoFault e) { + // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), + // e.getClass().getSimpleName())); + e.printStackTrace(); + } catch (ProtocolNotImplementedFault e) { + // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), + // e.getClass().getSimpleName())); + e.printStackTrace(); + } catch (AuthFault e) { + // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), + // e.getClass().getSimpleName())); + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ImageOpException e) { // TODO Auto-generated catch block e.printStackTrace(); } - System.out.println("TG-crud WSDL location: " + location.getProtocol() - + "://" + location.getHost() + ":" - + (location.getPort() == -1 ? "80" : location.getPort()) - + location.getPath()); - - // Create TG-crud service stub. - if (serverUrl != null) { - // Use MTOM stub. - TGCrudService_Service service = new TGCrudService_Service(location); - TGCrudService tgcrud = service.getTGCrudPort(); - BindingProvider bindingProvider = (BindingProvider) tgcrud; - SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding(); - binding.setMTOMEnabled(true); - - // Create holders. - Holder metadataHolder = new Holder(); - Holder dataHolder = new Holder(); - - // Start #READ operation. - try { - String theSessionId = sessionId; - String theLogParameter = logParameter; - String theUri = uri; - String mode = "digilib"; - long startTime = System.currentTimeMillis(); - tgcrud.read(theSessionId, theLogParameter, theUri, - metadataHolder, dataHolder); - System.out.println(Long.toString(System.currentTimeMillis() - - startTime) - + " ms"); - System.out.println("READ: Title=" - + metadataHolder.value.getObject().getGeneric() - .getProvided().getTitle().get(0)); - InputStream istream = dataHolder.value.getInputStream(); - String mt = metadataHolder.value.getObject().getGeneric().getProvided().getFormat(); - System.out.println("Stream="+istream.toString()+" type="+mt); - if (mode.equalsIgnoreCase("digilib")) { - // try scaling - DigilibConfiguration dlConfig = new DigilibConfiguration(); - DigilibRequest dlReq = new DigilibRequest(); - dlReq.setWithParamString(query, "&"); - ImageJobDescription job = ImageJobDescription.getInstance(dlReq, dlConfig); - ImageCacheStream imgStream = new ImageCacheStream(istream, mt); - System.out.println("iis="+imgStream.getImageInputStream()); - ImageLoaderDocuImage img = new ImageLoaderDocuImage(); - // reuse reader for stream input - img.reuseReader = true; - // identify image size - System.out.println("Identifying..."); - img.identify(imgStream); - job.setDocuImage(img); - job.setInput(imgStream); - // use image worker - ImageWorker digilib = new ImageWorker(dlConfig, job); - System.out.println("Scaling with "+digilib); - digilib.call(); - System.out.println(Long.toString(System.currentTimeMillis() - - startTime) - + " ms"); - // save image to buffer - ByteArrayOutputStream ostream = new ByteArrayOutputStream(); - img.writeImage("image/jpeg", ostream); - System.out.println("written in "+(System.currentTimeMillis()-startTime)+" ms"); - // set buffer in Holder - imageData.value = ostream.toByteArray(); - mimeType.value = "image/jpeg"; - width.value = img.getWidth(); - height.value = img.getHeight(); - System.out.println("output set."); - - /* save to file - File f = new File("/tmp/tgimg.jpg"); - OutputStream ostream = new FileOutputStream(f); - img.writeImage("image/jpeg", ostream); - System.out.println(Long.toString(System.currentTimeMillis() - - startTime) - + " ms"); - */ - } else { - // try to copy to file - File f = new File("/tmp/tgimg.img"); - OutputStream ostream = new FileOutputStream(f); - byte[] data = new byte[1024]; - int l = istream.read(data); - while (l > -1) { - ostream.write(data, 0, l); - l = istream.read(data); - } - ostream.close(); - System.out.println(Long.toString(System.currentTimeMillis() - - startTime) - + " ms"); - System.out.println("Done writing " + f); - } - } catch (ObjectNotFoundFault e) { - // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), - // e.getClass().getSimpleName())); - e.printStackTrace(); - } catch (MetadataParseFault e) { - // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), - // e.getClass().getSimpleName())); - e.printStackTrace(); - } catch (IoFault e) { - // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), - // e.getClass().getSimpleName())); - e.printStackTrace(); - } catch (ProtocolNotImplementedFault e) { - // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), - // e.getClass().getSimpleName())); - e.printStackTrace(); - } catch (AuthFault e) { - // System.out.println(TestServiceUtils.faultDetails(e.getFaultInfo(), - // e.getClass().getSimpleName())); - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ImageOpException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } else { - System.out.println("No TG-crud server WSDL URL given!"); - // assertTrue(false); - } } }