小编Way*_*der的帖子

Java和Tomcat - CodeCache已满.编译器已被禁用

我的情况

  • 我开发了一个用于文档分析的Web服务
  • 此Web服务读取txt和pdf文档
  • 为了阅读pdf文件,我使用的是我的大学顾问开发的java库
  • 我使用的是Java 7
  • 我目前正在Tomcat v7.0上部署它
  • 如果我从我的应用程序生成war文件并将其托管在我的电脑上的本地tomcat上,或者如果我通过eclipse ee在tomcat上启动我的应用程序,则读取pdf文件没有问题

我的问题

  • 我已经为自己设置了一个小服务器(不是最好的硬件,双核cpu,4g ram),安装了tomcat,java以及其他对我来说似乎必要的东西.
  • 当我现在使用tomcat管理器在服务器tomcat上部署war文件时,一切正常,直到我尝试让应用程序读取pdf文件.
  • 在应用程序读取了几个页面之后,我收到一条错误,CodeCache已经填满并且编译因此而被禁用.

pdf导入期间的错误输出示例

此日志显示如何导入pdf,并在某些时间点启动错误消息.我标记了erorr消息胖.

...

2012年5月31日上午11:15:40 infovis.structure.pdf.PDFImport进程信息:处理

2012年5月31日上午11:15:40 infovis.structure.pdf.PDFImport process INFO:Processing Page 14

2012年5月31日上午11:15:41 infovis.structure.pdf.PDFImport process INFO:Processing Page 15

Java HotSpot(TM)64位服务器VM警告:CodeCache已满.编译器已被禁用.Java HotSpot(TM)64位服务器VM警告:尝试使用-XX增加代码缓存大小:ReservedCodeCacheSize =代码缓存[0x00007fa43437e000,0x00007fa4347fe000,0x00007fa43737e000] total_blobs = 1858 nmethods = 1318 adapters = 490 free_code_cache = 44631Kb largest_free_block = 45618688 Java HotSpot (TM)64位服务器VM警告:CodeCache已满.编译器已被禁用.Java HotSpot(TM)64位服务器VM警告:尝试使用-XX增加代码缓存大小:ReservedCodeCacheSize =代码缓存[0x00007fa43437e000,0x00007fa4347fe000,0x00007fa43737e000] total_blobs = 1859 nmethods = 1318 adapters = 490 free_code_cache = 44631Kb largest_free_block = 45618688

2012年5月31日上午11:16:19 infovis.structure.pdf.PDFImport process INFO:Processing Page 16

2012年5月31日上午11:16:20 infovis.structure.pdf.PDFImport process …

java compiler-construction tomcat code-caching

12
推荐指数
1
解决办法
9180
查看次数

如何将d3(javascript)添加到vaadin应用程序?

晚上好,

我目前正在尝试将d3的可视化功能添加到我的vaadin应用程序中.如果你不知道d3是什么,这里有一个快速链接:http://d3js.org/

但我遇到了一些问题:

  • 如何添加"d3.v2.js"javascript文件/库,这是使用d3进行开发所必需的?我尝试将它添加到一个自己的主题(WebContent/VAADIN/themes/myOwnTheme/..),但是通过在eclipse中刷新我收到的消息:"构建期间发生了错误.错误运行构建器'JavaScript Validator'在项目上' VaadinD3Testproject'.14".我猜那是因为js文件可能太大了,大约有8000行?我读到了以某种方式将文件添加到web.xml?有办法吗?

  • 我怎样才能将javascript代码添加到我的vaadin应用程序中?经过我的研究,我知道可以使用的选项:

    • .getMainWindow()executeJavaScript( "警报( '富');")

    要么

    • 标签测试=新标签("将鼠标移到这里..

      ",Label.CONTENT_XHTML);

- >有没有其他方法来集成JavaScript代码?

有人可以通过一种"一步一步"的解释帮助我,如何解决这两种方式?这里的帮助真的很值得赞赏,因为我对此并不熟悉.

-------更新-----------

如何添加"d3.v2.js"javascript文件/库,这是使用d3进行开发所必需的?我尝试将其添加到自己的主题(WebContent/VAADIN/themes/myOwnTheme/..),但通过刷新我收到消息:"构建期间发生错误.错误运行构建器'JavaScript Validator'项目'VaadinD3Testproject' .14".我猜那是因为js文件可能太大了,大约有8000行?我读到了以某种方式将文件添加到web.xml?有办法吗?

我修复了这个错误,这是我的eclipse和inbuild javascript验证器的问题.我现在能够通过用自己的servlet覆盖ajax类来将js文件加载到我的应用程序中,正如在几篇文章中所描述的那样.

我现在尝试了几种方法:

  • getMainWindow.executeJavaScript()无法以某种方式使用d3,只要我想添加一些d3代码,例如"d3.select("body").append("svg");" ,它只是不执行它(无论我是否执行标记,但我一般都注意到标记中的代码不会被执行)

  • 我尝试使用CustimLayout,因为它已在本论坛的一些示例中显示,但它再次如上所述.当我检查网站源代码时,我的代码只是丢失或解析出来

  • 标签不再起作用,无论是XHTML还是RAW模式,都会发生异常

  • 覆盖在服务器启动时构建bodys时调用的另一个servlet方法,结果是我收到一条错误消息,即vaadin甚至无法加载默认的widgetset.

那么,还剩下什么?有没有办法将d3与vaadin集成?没有人试过这个吗?我昨天也读了很多关于即将推出的vaadin 7.但是它甚至可以选择使用我不知道它的稳定性的alpha版本(我猜这就是为什么它被称为alpha)

感谢您与我分享的每一个想法

javascript java visualization vaadin d3.js

8
推荐指数
1
解决办法
6719
查看次数

Vaadin和Hibernate - 正确关闭与数据库的连接

我目前遇到了一个有趣的问题.

我的情况:

  • 我目前正在开发一个Web服务(我正在使用VAADIN在eclipse中使用JAVA进行编程)
  • 我的数据库背后是java derby
  • 我正在使用hibernate作为我的数据库
  • 我目前正在Tomcat v7.0上部署它

我的问题:

  • 当我在代码中更改某些内容(无关紧要)时,服务器应该重新加载它而不需要重新启动 - 我猜这是整体预期的行为
  • 服务器重新加载应用程序成功,但如果我尝试点击某些东西(所以重新加载后),例如登录按钮,我收到一个错误

错误信息:

原因:org.hibernate.exception.GenericJDBCException:无法打开连接]与根本原因错误XSDB6:另一个Derby实例可能已经启动了数据库C:\ HTML-Ausgabe\database\DocumentDB.at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)...

我的想法

似乎在重新加载过程中,hibernate的连接/上下文不会被破坏/关闭,因此当服务器尝试重新连接到数据库时会发生错误

我的守则

我有一个名为Hibernate Listener的类:

public class HibernateListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        HibernateUtil.getSessionFactory(); // Just call the static initializer of that class    
    }

    public void contextDestroyed(ServletContextEvent event) {
        HibernateUtil.getSessionFactory().close(); // Free all resources
    }
}
Run Code Online (Sandbox Code Playgroud)

我的hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property>
        <property name="hibernate.connection.url">jdbc:derby:C:\HTML-Ausgabe\database\DocumentDB;create=true</property>
        <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
        <property name="hibernate.current_session_context_class">thread</property>
        <property …
Run Code Online (Sandbox Code Playgroud)

java database hibernate reload vaadin

6
推荐指数
1
解决办法
4615
查看次数

如何在Prolog中创建此DCG?

我想创建一个像这样的语言被接受的DCG:

  • C
  • bbbcbbb
  • bbacbba
  • abacaba
  • aababacaababa

正如您所看到的,这意味着a和b的特定顺序,然后是c,然后再次与c之前的顺序完全相同.如果不满足这些条件,它将失败.

我目前在这里采用我的方法(工作,但也识别错误的单词)

s --> x, s, x. 
s --> [c]. 
x --> [a]. 
x --> [b]. 
Run Code Online (Sandbox Code Playgroud)

你们有人可以帮我解决我需要改变的问题吗?我不知道该怎么做.非常感谢.

prolog regular-language dcg

6
推荐指数
2
解决办法
175
查看次数

如何在Vaadin中禁用浏览器缓存

我的问题很简短(希望很容易解决!):如何完全禁用使用vaadin实现的Web服务中的浏览器缓存?

我想完全禁用缓存,因为当我尝试执行一些PDF流并将其显示在我的浏览器中时遇到问题。

例如,我在这里阅读了有关我的问题的解决方案:

使用<meta>标记来关闭所有浏览器中的缓存?

他们谈论将一些标头添加到Web应用程序以禁用浏览器缓存。但是,如何将它们添加到Vaadin应用程序中?

简短的代码片段将非常受欢迎(而且很有帮助!)

再次感谢您的所有回答,并认为您正在与我分享。

pdf caching browser-cache vaadin http-headers

5
推荐指数
1
解决办法
4972
查看次数

如何通过外部更新保持你的hibernate levell 1缓存一致?

请原谅我这个问题,但到目前为止我无法通过我的研究找到任何解决方案.(至少没有任何帮助过我)

我的情况:

  • 我正在使用hibernate进行vaadin webservice
  • Web服务正在上传文档,并通过我的MySQL数据库中的hibernate将它们保持不变
  • 后台中的计算服务(后来可能在另一台服务器上的单独进程)对上载的文档执行计算任务,并在数据库中再次添加结果
  • Web服务识别数据库中的分析结果并将其显示给用户

我的问题:

  • 我的问题是1级休眠缓存
  • 计算服务启动后,他不会在以后更新的文档上计算任何内容,因为它们在完成给定的搜索查询时不会出现在缓存中.
  • 我的webservice覆盖了计算服务器中的更改,因为它对它也一无所知.

我知道hibernate 1级缓存负责这种行为(顺便说一下lvl 2缓存不活跃).

到目前为止我尝试过的

  • 我已经阅读了很多内容并尝试了几种方法,例如在各个地方调用session.clear().这经常给我"会话已关闭"的例外并没有帮助我(虽然我读到人们提到这有助于他们的问题)

  • 我试图确保会话总是在最后关闭,但这并没有解决问题,以及我读到我不需要手动关闭会话,无论如何,在我使用transaction.commit()之后(我听说这是每个请求模式的会话标准)

  • 我尝试关闭我的sessionfactory并在每次我的计算服务需要搜索数据库时重新打开它.如果我也在我的Web服务上执行此操作,这部分工作并且可能已满,但这对我来说似乎不是一个非常好的解决方案(也是内存消耗,不是吗?)

  • 我尝试添加

<property name ="hibernate.connection.isolation"> 2 </ property>

到我的hibernate.cfg.xml,但这也只是部分工作.使用这个我的计算服务完成了计算任务,但每次通过Web服务上传新数据时,他的更改都会被覆盖.因此,检测到新的上传,但是一旦到达新的上传,所有已分析的文档将再次被分析.

我一直在考虑管理会话的方式是否不正确.我的类DAO有两个方法,它们在事务的每个开头和每个结尾都被调用.

public abstract class DAO {

/**
 * Returns the current hibernate session. Also takes care that there's
 * always an open hibernate transaction when needed.
 * 
 * @return Current hibernate session
 */
public static Session getSession() {
    Session currentSession = HibernateUtil.getSessionFactory()
            .getCurrentSession();
    if (!currentSession.getTransaction().isActive()) {
        currentSession.beginTransaction();
    } …
Run Code Online (Sandbox Code Playgroud)

java mysql orm caching hibernate

4
推荐指数
1
解决办法
2274
查看次数

我怎样才能正确解析这种日期?

我找不到一个正确而干净的工作解决方案,我的日期格式如下:

201406082159

(6月8日,21:59这里)

最后我试过这个:

SimpleDateFormat format2 = new SimpleDateFormat("YYYYMMDDHHMM", Locale.ENGLISH); 
Run Code Online (Sandbox Code Playgroud)

可悲的是,它没有工作并打印出来

Sun Dec 29 21:00:00 CET 2013
Run Code Online (Sandbox Code Playgroud)

java date date-format simpledateformat

2
推荐指数
1
解决办法
82
查看次数

这是正确的json语法吗?

我正在尝试使用d3并尝试从json文件中读取数据.

我当前想要保存在json文件中的是带有x和y坐标的文本的单词,其中的单词应写在输出.html文件中.

你能否告诉我这个选择的json语法方法是否正确?

{"text": [
    {
      "Word": "Hi",
      "X": 300,
      "Y": 400,
    }
    {
      "Word": "Hello",
      "X": 500,
      "Y": 100,
    }
]}
Run Code Online (Sandbox Code Playgroud)

非常感谢你的回答.

javascript json d3.js

1
推荐指数
1
解决办法
600
查看次数

尽管存在,但在结果列表中缺少在java中读取文本文件的问题

我现在遇到一个有趣的问题.

我正在尝试在java中读取此文件,其中包含按字母顺序排列的1000个最常见的英语单词:

http://www.file-upload.net/download-6679295/basicVocabulary.txt.html

这是文件开头的片段:

a
able
about
above
according
account
across
act
action
added
afraid
after
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,虽然看起来我正在正确读取txt文件,但我的结果集/结果列表中稍后会丢失第一行.在这种情况下,这是字母"a",因为它位于第一个位置.

为了使您能够重现我的问题,使用上面的txt文件尝试此示例代码并亲自查看(不要忘记更新文件路径).我在评论中添加了控制台输出.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class MyWrongBehaviour {

public static void main(String[] args){
    MyWrongBehaviour wrong = new MyWrongBehaviour(); 

    List<String> list = wrong.loadLanguageFile(); 

    System.out.println("size of the list: " + list.size()); //Answer is 1000, that's the correct size

    for(String s : list){
        System.out.println(s); // "a" will appear, so it is somehow included …
Run Code Online (Sandbox Code Playgroud)

java file-io inputstream file character-encoding

1
推荐指数
1
解决办法
811
查看次数

从两个Date对象以分钟计算的错误时间,以计算持续时间

我试图以分钟计算两个日期对象之间的持续时间.

我在研究期间从这个 stackoverflow问题中找到了一些灵​​感.通常这似乎是正确的,但我正在经历一个测试用例的有趣行为.

当我运行下面附带的源代码(你可以简单地复制它)时,它返回66分钟而不是(正确的结果)6我目前不明白为什么.也许我现在正在监督一些事情,你能告诉我它是什么吗?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test {

    private SimpleDateFormat parserSDF = new SimpleDateFormat("MM/dd/yy HH:mm",
            Locale.ENGLISH);

    public static void main(String[] args) {
        Test test = new Test();
        Date begin = test.createDateFromString("10/25/09 1:54");
        Date end = test.createDateFromString("10/25/09 2:00");

        int duration = test.minutesDiff(begin, end);
        //result is 66
        System.out.println(duration);
    }

    public int minutesDiff(Date earlierDate, Date laterDate) {
        if (earlierDate == null || laterDate == null)
            return 0;

        return (int) ((laterDate.getTime() / 60000) - (earlierDate.getTime() …
Run Code Online (Sandbox Code Playgroud)

java time datetime duration date

1
推荐指数
1
解决办法
219
查看次数