2013-07-20 91 views
0

在JAX-RS服務中我不想提供XmlValidatonReader,它將傳入的XML文檔與WebContent目錄中存在的xsd文件進行驗證。從MessageBodyReader類訪問WebContent文件夾中的xsd文件

enter image description here

XSD文件需要是WebContent文件夾內,因爲它應該是客戶端訪問。爲了驗證傳入的XML文件,我需要的XSD資源:/WebContent/Category.xsd

如何從src/at/fhj/ase/XmlValidationReader.java

回答

0

所以我把它加載此運行。

@Provider 
@Consumes(MediaType.APPLICATION_XML) 
public class XmlValidationReader implements MessageBodyReader<Category> { 

    protected Providers providers; 
    protected ServletContext servletContext; 
    private final String xsdFileName = "/Category.xsd"; 
    private Schema schema; 

    public XmlValidationReader(@Context Providers providers, 
      @Context ServletContext servletContext) { 
     this.providers = providers; 
     this.servletContext = servletContext; 

     try { 
      SchemaFactory sf = SchemaFactory 
        .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
      File xsd = new File(servletContext.getRealPath(xsdFileName)); 
      schema = sf.newSchema(xsd); 
     } catch (Exception e) { 
      throw new RuntimeException(
        "Unable to create XSD validation schema", e); 
     } 
    } 

    @Override 
    public boolean isReadable(Class<?> type, Type genericType, 
      Annotation[] annotations, MediaType mediaType) { 
     ... 
    } 


    @Override 
    public Category readFrom(Class<Category> type, Type genericType, 
      Annotation[] annotations, MediaType mediaType, 
      MultivaluedMap<String, String> httpHeaders, InputStream entityStream) 
      throws IOException, WebApplicationException { 
     ... 
    } 
相關問題