繁体   English   中英

Java WS:XSD组件在哪里?

[英]Java WS : Where is the XSD part?

我从《 Java Web服务:启动和运行》一书开始学习Java Web Services。 在本书的某些部分中,作者讨论了一些xsd部分。 问题是当我尝试代码以及​​生成WSDL ,我没有得到这些部分。

这是WS实现的示例:

import java.awt.Image;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(serviceName = "SkiImageService")
// @HandlerChain(file = "../handlers/handler-chain.xml")
public class SkiImageService {
  private static final String[] names = {"nordic.jpg", "tele.jpg", "alpine.jpg"};
  private String default_key;
  private Map<String, String> photos;

  public SkiImageService() {
    photos = new HashMap<String, String>();
    photos.put("nordic", "nordic.jpg");
    photos.put("alpine", "alpine.jpg");
    photos.put("telemk", "telemk.jpg");
    default_key = "nordic";
  }

  // Create a named image from the raw bytes.
  private Image createImage(String name) {
    byte[] bytes = getRawBytes(name);
    ByteArrayInputStream in = new ByteArrayInputStream(bytes);
    Iterator iterators = ImageIO.getImageReadersByFormatName("jpeg");
    ImageReader iterator = (ImageReader) iterators.next();
    try {
      ImageInputStream iis = ImageIO.createImageInputStream(in);
      iterator.setInput(iis, true);
      return iterator.read(0);
    } catch (IOException e) {
      System.err.println(e);
      return null;
    }
  }

  // Create a list of all available images.
  private List<Image> createImageList() {
    List<Image> list = new ArrayList<Image>();
    Set<String> key_set = photos.keySet();
    for (String key : key_set) {
      Image image = createImage(key);
      if (image != null) {
        list.add(image);
      }
    }
    return list;
  }

  // Returns one image given the image's name.
  @WebMethod
  public Image getImage(String name) {
    return createImage(name);
  }

  // Returns a list of all available images.
  @WebMethod
  public List<Image> getImages() {
    return createImageList();
  }

  // Read the bytes from the file for one image.
  @SuppressWarnings("unused")
  private byte[] getRawBytes(String name) {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    try {
      String cwd = System.getProperty("user.dir");
      String sep = System.getProperty("file.separator");
      String base_name = cwd + sep + "jpegs" + sep;
      String file_name = base_name + name + ".jpg";
      FileInputStream in = new FileInputStream(file_name);

      // Send default image if there's none with this name.
      if (in == null) {
        in = new FileInputStream(base_name + "nordic.jpg");
      }
      byte[] buffer = new byte[2048];
      int n = 0;
      while ((n = in.read(buffer)) != -1) {
        out.write(buffer, 0, n); // append to ByteArrayOutputStream
      }
      in.close();
    } catch (IOException e) {
      System.err.println(e);
    }
    return out.toByteArray();
  }

}

当我查看WSDL时,找不到以下内容:

<xs:complexType name="getImagesResponse"> 
    <xs:sequence>
        <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"></xs:element>
    </xs:sequence> 
</xs:complexType>

<xs:complexType name="getImageResponse"> 
    <xs:sequence>
        <xs:element name="return" type="xs:base64Binary" minOccurs="0"></xs:element> </xs:sequence>
</xs:complexType>

在哪里可以找到XSD文件/部件?

问候,

米克

您将要看一下WSDL的类型部分(在顶部附近)。 例如,这是我正在从事的项目的WSDL中的该部分:

<types>
  <xsd:schema>
    <xsd:import schemaLocation="http://localhost:8080/FloeClient/localFiles?xsd=1" namespace="http://app.client.floe.iceberg.com/"/>
  </xsd:schema>
</types>

请注意xsd参考。 如果要打开该URL,则会看到XSD。 在WSDL中寻找xsd:import语句。

大多数WSDL生成器将包括XSD。 但这不是必须的。 这对于在WSDL中定义的所有类型都是完全有效的。 因此,如果您没有对XSD的引用,那不是错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM