включение JPA статического плетения (eclipselink) - PullRequest
4 голосов
/ 07 марта 2012

Я новичок в Eclipselink.Я написал несколько веб-сервисов (развернутых в Tomcat) с использованием Eclipselink / Java.Эти веб-сервисы используют несколько классов сущностей.Чтобы улучшить производительность веб-сервисов, я пытаюсь использовать статическое плетение.Я узнал, что могу включить это либо из командной строки, либо с помощью скрипта Ant Eclipselink weave.Поскольку я использую eclipse и строю свою WAR из eclipse, я не уверен, где следует использовать Ant-задачу weave в Eclipse IDE.Итак, я попробовал параметр командной строки следующим образом:

java org.eclipse.persistence.tools.weaving.jpa.StaticWeave -persistenceinfo c:\eclipse 
\workspace\employeeModel\src -classpath c:\eclipse\workspace\employeeModel\src -log 
c:\log\weave.log -loglevel FINEST c:\eclipse\workspace\employeeModel\src c:\eclipse 
\workspace\employeeModel\src

[Последние два пути в команде, c: \ eclipse \ workspace \ employeeModel \ src c: \ eclipse \ workspace \ employeeModel \ src ссылаютсяисточник и цель соответственно]

Когда я запустил это, он записал в файл журнала следующее: [EL Finest]: 2012-03-05 17: 22: 49.806 - ServerSession (8880493) - Поток (тема [Основная, 5, основная]) - свойство = eclipselink.jpa.uppercase-столбцы-имена;значение по умолчанию = false [EL Finer]: 2012-03-05 17: 22: 49.837 - ServerSession (8880493) - Thread (Thread [main, 5, main]) - Поиск файла сопоставления по умолчанию в файле: / c: / eclipse / workspace / employeeModel / src / [EL Finer]: 2012-03-05 17: 22: 49.852 - ServerSession (8880493) - Thread (Thread [main, 5, main]) - Поиск сопоставления по умолчаниюфайл в файле: / c: / eclipse / workspace / employeeModel / src /

Из журнала выглядит, что staticWeave не завершилось успешно.Но в командной строке также не возникло никаких ошибок.

Поскольку я использовал один и тот же путь для источника (.java) и цели, staticWeave перезаписал мои исходные файлы (файлы .java).Я не уверен, создаст ли staticWeave (команда, которую я запускал выше) файлы классов (.class) или перезапишу исходный код (.java).

Я также не уверен, что то, что я сделал, правильно.Как я могу проверить, действительно ли включено статическое плетение?Если то, что я сделал, не правильно, может кто-нибудь помочь мне понять, как использовать задачу Eclipselink weave ant в Eclipse IDE?или ошибка, которую я делаю в опции командной строки.Кроме того, я хотел бы знать, будет ли staticWeave перезаписывать исходные файлы или создавать байтовые коды (файлы .class).

Я потратил несколько часов, чтобы сделать эту работу, но безуспешно.Может ли кто-нибудь пролить свет на это?

Ценю вашу помощь.

Ответы [ 4 ]

3 голосов
/ 21 августа 2013

Добавьте этот код в файл build.xml:

<target name="-post-jar">
        <antcall target="weaving"/>
</target>
<target name="define.task" description="New task definition for EclipseLink static weaving">
<taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/>
</target>
<target name="weaving" description="perform weaving" depends="define.task">
        <weave  source="C:\<projectpath>\dist\${ant.project.name}.jar"
                target="C:\<projectpath>\dist\woven-${ant.project.name}.jar"
                persistenceinfo="D:\<projectpath>\lib\persistence.jar"
                loglevel="FINE"
                log="C:\<projectpath>\weaver.log">
            <classpath>
            </classpath>
        </weave>
</target>

В коде измените <projectpath>, указав путь к исходному коду.И persistenceinfo указывает на другой jar (persistence.jar), который содержит только persistence.xml, который я использую, поскольку я использую один и тот же файл persistence.xml среди нескольких проектов.Если вы не используете отдельный файл jar для файла persistence.xml, удалите это свойство и используйте persistencexml=<path-to-persistence.xml-file>\META-INF\persistence.xml.

. Кроме того, вам нужно добавить файлы eclipselink.jar и javax.persistence...jar вМуравьиный путь.Если вы используете Netbeans, перейдите на Tools | Options | Java | Ant, где вы можете добавить эти файлы в путь к классам.

При использовании предыдущего кода каждый раз, когда вы компилируете, он генерирует новый файл с префиксом woven-, которыйэто ваша новая тканая банка.

3 голосов
/ 07 марта 2012

Статическое плетение, переплетение файлов .class и вывод файлов .class. Это не работает с файлами .java. Обычно вы даете ему файл jar, и он выводит новый файл jar.

См, http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

0 голосов
/ 01 февраля 2017

Если проект maven, вы можете использовать этот плагин maven для плетения баночки

 <plugins>
        ...
        <plugin>
            <groupId>de.empulse.eclipselink</groupId>
            <artifactId>staticweave-maven-plugin</artifactId>
            <version>1.0.0</version>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>weave</goal>
                    </goals>
                    <configuration>
                        <persistenceXMLLocation>META-INF/persistence.xml</persistenceXMLLocation>
                        <logLevel>FINE</logLevel>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.persistence</groupId>
                    <artifactId>org.eclipse.persistence.jpa</artifactId>
                    <version>${eclipselink.version}</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>

См. Также: EclipseLink - Настройка статического плетения

0 голосов
/ 12 марта 2014

Вы можете использовать разбитую структуру каталогов вместо фляги для ваших файлов классов, если вы хотите.

...