2017-11-28 7 views
0

私はbatik-bridge 1.6-1依存関係を使用するjsfプロジェクトを持っています。Payatでバティック依存関係が動作しない

@Stateless 
    public class MyEventListener extends DescriptorEventAdapter { 
    @PersistenceContext(unitName = StaticUtil.UNIT_NAME) 
    private EntityManager em; 

    protected EntityManager getEntityManager() { 
     EntityManagerFactory entityFactory = Persistence.createEntityManagerFactory(StaticUtil.UNIT_NAME); 
     em = (JpaEntityManager) entityFactory.createEntityManager(); 
     return em; 

    } 
... 
: 私はGlassFishの上でプロジェクトを実行し、このエラーを生成するコードの一部を、それが完璧に動作しますが、私はペーシュ・カショーロ4.1.2.173を使用する場合、私は、このエラー・スタックに

Grave: org.xml.sax.SAXNotRecognizedException: http://javax.xml.XMLConstants/feature/secure-processing 
    at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source) 
    at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(Unknown Source) 
    at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source) 
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source) 
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source) 
    at org.eclipse.persistence.internal.helper.XMLHelper.createParserFactory(XMLHelper.java:98) 
    at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:628) 
    at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:617) 
    at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:503) 
    at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPersistenceUnitInfoInArchive(JPAInitializer.java:178) 
    at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPersistenceUnitInfoInArchives(JPAInitializer.java:160) 
    at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPersistenceUnitInfo(JPAInitializer.java:141) 
    at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:188) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) 
    ... 

を得る4.1.1

のpersistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 

    <persistence-unit name="mypersistence-ejbPU" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>myJNDI</jta-data-source> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <properties> 
      <property name="eclipselink.jpa.uppercase-column-names" value="true"/> 
      <property name="eclipselink.ddl-generation" value="create-tables"/> 
<!--   <property name="eclipselink.logging.level.sql" value="FINEST"/> 
      <property name="eclipselink.logging.parameters" value="true"/> 
      <property name="eclipselink.logging.logger" value="ServerLogger"/>--> 
      <!--<property name="eclipselink.logging.level" value="FINE"/>--> 
      <!--<property name="eclipselink.logging.level.cache" value="FINE"/>--> 
      <!--property name="eclipselink.logging.level" value="FINE"/--> 
      <!--property name="eclipselink.weaving" value="static"/--> 
      <!--<property name="eclipselink.logging.level.sql" value="FINE"/>--> 
      <!--property name="eclipselink.logging.level.cache" value="FINEST"/--> 
      <property name="javax.persistence.schema-generation.database.action" value="create"/> 
      <!--<property name="javax.persistence.schema-generation.database.action" value="create"/>--> 
     </properties> 
    </persistence-unit> 
</persistence> 

NB:私はプロジェクト依存Batik-bridge 1.6-1を削除ペーシュ・カショーロ&のGlassFishの両方で動作しますが、私はこの依存関係を使用する必要があり、問題がバティック1.7にアップグレードすることで解決しました

+3

BatikはxercesImplに依存しており、JPAのEclipseLinkサブシステムは内部のSAXParserを使用する代わりにpersistence.xmlを読み取るようになっているようです。エラーは、xerces SAXパーサがpersistence.xmlを解析できないということです。 persistence.xmlの内容を投稿できますか? – OndrejM

+0

@OndrejM質問に追加しました –

+0

@OndrejM答えを確認できる解決策が見つかりました –

答えて

0

この依存関係を必要とする:

代わり
<dependency> 
    <groupId>org.apache.xmlgraphics</groupId> 
    <artifactId>batik-bridge</artifactId> 
    <version>1.7</version> 
</dependency> 

 <dependency> 
      <groupId>batik</groupId> 
      <artifactId>batik-bridge</artifactId> 
      <version>1.6-1</version> 
     </dependency> 

@OndrejMが言ったようにバティック1.6-1はxercesImplに依存しているため、Saxパーサーで問題が発生するようです。バティック1.7は別のパーサーを使用しているようですが、今は完全に動作します。

関連する問題