2012-03-07 60 views
4

我是Eclipselink的新手。我使用Eclipselink/Java編寫了幾個Web服務(部署在Tomcat中)。這些Web服務使用幾個實體類。爲了提高Web服務性能,我試圖使用靜態編織。我瞭解到,我可以通過命令行或使用Eclipselink weave ant腳本啓用此功能。由於我使用eclipse並從eclipse構建我的WAR,所以我不確定應該在Eclipse IDE中使用「編織」Ant任務。所以,我試圖命令行選項是這樣的:在命令啓用JPA靜態編織(eclipselink)

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:\蝕\工作空間\ employeeModel \ SRC C:\蝕\工作空間\ employeeModel \ SRC是指源極和目標]

當我跑這個,它在日誌文件中記錄以下內容: [EL Finest]:2012-03-05 17:22:49.806 - ServerSession(8880493) - Thread(Thread [main ,如圖5所示,主]) - 屬性= eclipselink.jpa.uppercase-列名;默認值= false [EL Finer]:2012-03-05 17:22:49.837 - ServerSession(8880493) - 線程(線程[main,5,main]) - 在文件中搜索默認映射文件:/ c:/ eclipse/workspace/employeeModel/src/ [EL Finer]:2012-03-05 17:22:49.852 - ServerSession(8880493) - 線程(線程[main,5,main]) - 搜索在文件默認映射文件:/ C:/月食/工作區/ employeeModel/src目錄/

從日誌它看起來像staticWeave沒有成功完成。但是它在命令行上也沒有產生任何錯誤。

,因爲我用相同的路徑兩個源(的.java)和目標時,staticWeave沒有覆蓋我的源文件(.java文件)。我不確定staticWeave(我在上面運行的命令)是否會生成類文件(.class)或覆蓋源代碼(.java)。

我也不確定我所做的是否正確。我如何驗證靜態編織是否實際啓用?如果我所做的不正確,有人能幫我理解如何在Eclipse IDE中使用Eclipselink weave ant任務嗎?或者我在命令行選項上犯的錯誤。 此外,我想知道staticWeave是否會實際覆蓋源文件或創建字節代碼(.class文件)。

我花了好幾個小時來完成這項工作,但沒有成功。有人可以對此有所瞭解嗎?

感謝您的幫助。

回答

3

將此代碼添加到您的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文件。如果您沒有爲persistence.xml文件使用單獨的jar,請刪除該屬性並使用persistencexml=<path-to-persistence.xml-file>\META-INF\persistence.xml

另外,您需要將文件eclipselink.jarjavax.persistence...jar添加到Ant類路徑中。如果您使用的是Netbeans,請轉至Tools | Options | Java | Ant,您可以將這些文件添加到類路徑中。

使用前面的代碼,每次編譯時都會生成一個新文件,其前綴爲woven-,這是您的新編織jar文件。

0

如果需要,您可以使用分解目錄結構而不是jar來爲您的類文件編織。

0

如果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 - Configuring Static Weaving