我开始使用Hibernate和Struts 2进行相对简单的Web项目.出于性能原因,我知道建议最小化您创建Hibernate Configuration和SessionFactory对象的次数.
任何人都可以提供一些关于这是否是一个好方法或是否有更好的方法的输入?我基于这个我在这里找到的例子的代码.
方法是在ServletContextListener的contextInitialized方法中创建SessionFactory并将其存储在ServletContext中.
我注意到这个例子似乎没有关闭SessionFactory所以我在contextDestroyed中添加了一些代码.这有必要吗?
非常感谢任何输入.如果你能提出更好的例子,我很乐意看看它们.我也看过一些Struts的"Full Hibernate插件"的引用.这是一种常用且更好的方法吗?
FWIW,我正在使用Eclipse并使用MySQL部署到Tomcat
public class HibernateListener implements ServletContextListener {
private Configuration config;
private SessionFactory sessionFactory;
private String path = "/hibernate.cfg.xml";
public static final String KEY_NAME = HibernateListener.class.getName();
@Override
public void contextDestroyed(ServletContextEvent arg0) {
if ( sessionFactory != null ) {
sessionFactory.close();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
try {
URL url = HibernateListener.class.getResource(path);
config = new Configuration().configure(url);
sessionFactory = config.buildSessionFactory();
// save the Hibernate session factory into serlvet …Run Code Online (Sandbox Code Playgroud) 我是 Cassandra 的新手,想在我使用 CCM 创建的开发集群上运行 OpsCenter。
我看到 CCM 有一个用于配置 OpsCenter 的 -o 选项,如此处所述。但是,尚不清楚如何使用此选项。
这是我迄今为止尝试过的:
ccm create test_cluster -v 2.1.2 -o OPSCENTER
ccm populate -n 3
ccm start -v
Run Code Online (Sandbox Code Playgroud)
当我打开 OpsCenter 时,我看到: 3 agents failed to connect
ccm create -h对于-o OPSCENTER节目:Download and use provided opscenter version to install with DSE. Will have no effect on cassandra installs)
我不清楚如何继续。
我们正在将Java模板的持久层从JDBC模板重构为JPA/Hibernate.
我正在分析发给数据库的SQL语句,我看到很多次发出"SHOW WARNINGS".据JProfiler称,"SHOW WARNINGS"占据了相当数量的"固有时间".
什么可能导致SHOW WARNINGS频繁发布?
使用Jdbc模板时,以前未发布此SHOW WARNINGS.
下面是与持久性相关的堆栈部分.这里唯一的变化是引入了JPA/Hibernate.
编辑:这是发布SHOW WARNINGS时的示例堆栈跟踪.
com.mysql.jdbc.StatementImpl.getWarnings()
com.zaxxer.hikari.proxy.PreparedStatementJavassistProxy.getWarnings()
org.hibernate.jpa.internal.QueryImpl.getSingleResult()
com.mysema.query.jpa.impl.AbstractJPAQuery.getSingleResult(javax.persistence.Query)
com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult()
com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult(com.mysema.query.types.Expression)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[ ])
com.sun.proxy.$Proxy115.findOne(com.mysema.query.types.Predicate)
Run Code Online (Sandbox Code Playgroud) 我们最近在服务器和客户端上从Jersey 1.x升级到Jersey 2.22.1.我们现在间歇地看到泽西岛将提出/接收两个请求.
我可以通过在此客户端POST请求上循环数千次来重现它.每个请求都会发送一个唯一的"名称",该名称将保留在服务器上.我知道当我遇到一个唯一的约束违规试图保持两次相同的"名称"时,我们收到了一个重复的请求.我排除了代码的其他部分,因为日志确认Jersey正在接收两个相同"名称"的POST请求
我已在服务器上的org.glassfish包中启用了跟踪日志记录,并在客户端上注册了LoggingFilter().
客户端仅显示1个POST请求和响应:
Jun 21, 2016 6:02:51 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 8291 * Sending client request on thread main
8291 > POST http://localhost:9797/my-webapp/v1/data-feeds/
8291 > Accept: application/json
8291 > Content-Type: application/json
Jun 21, 2016 6:02:51 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 8291 * Client response received on thread main
8291 < 200
8291 < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
8291 < Content-Length: 181
8291 < Content-Type: application/json …Run Code Online (Sandbox Code Playgroud) 下面的详细信息,但基本上我正在试图了解我的Droid上发生了什么错误.
细节:我正在努力加快C2DM的速度.我正在测试使用Urban Airship的推送通知服务(目前为止非常酷的IMO)通过C2DM向Android上运行的应用程序发送通知.
我的Droid(运行Android 2.2.2)不显示通知,每次我认为在设备上收到通知时,我都会看到写入LogCat的堆栈跟踪.
我不知道是什么产生了堆栈跟踪.我知道每当我通过Urban Airship的网站向设备发送推送通知时,它就会生成.
我非常确定我已经正确配置了我的C2DM,Urban Airship和Android应用程序,因为我可以在Android模拟器上使用相同的应用程序和Google帐户成功接收和显示通知.仅供参考 - Android应用程序是Urban Airship的示例Android推送应用程序,使用我的配置信息进行编辑.
由于它在Android模拟器中工作并且在我的实际设备上失败,我假设我的设备有一些导致它失败的东西.因此,对下面的堆栈跟踪感兴趣.
11-11 16:15:28.894: E/TalkProvider(4433): query db caught
11-11 16:15:28.894: E/TalkProvider(4433): java.lang.IllegalArgumentException: the bind value at index 2 is null
11-11 16:15:28.894: E/TalkProvider(4433): at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:234)
11-11 16:15:28.894: E/TalkProvider(4433): at android.database.sqlite.SQLiteQuery.bindString(SQLiteQuery.java:182)
11-11 16:15:28.894: E/TalkProvider(4433): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:48)
11-11 16:15:28.894: E/TalkProvider(4433): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
11-11 16:15:28.894: E/TalkProvider(4433): at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
11-11 16:15:28.894: E/TalkProvider(4433): at com.google.android.gsf.talk.TalkProvider.queryInternal(TalkProvider.java:1740)
11-11 16:15:28.894: E/TalkProvider(4433): at com.google.android.gsf.talk.TalkProvider.query(TalkProvider.java:1436)
11-11 16:15:28.894: E/TalkProvider(4433): at android.content.ContentProvider$Transport.query(ContentProvider.java:163)
11-11 16:15:28.894: E/TalkProvider(4433): at android.content.ContentResolver.query(ContentResolver.java:245)
11-11 16:15:28.894: E/TalkProvider(4433): at …Run Code Online (Sandbox Code Playgroud) 请原谅我的Apple和iOS dev noobness.:)
在以下情况下,我试图从许可和Apple帐户角度确切地弄清楚公司和每个开发人员需要做什么:
一家公司希望做一些iOS开发工作,主要是原型设计,现在基本熟悉iOS开发.公司开发团队主要是Windows/Java,所以我们还没有任何Mac硬件或Apple许可证.
这是一些细节:
我知道公司需要注册iOS开发者计划.
但是每个开发者呢?为公司工作的每个开发人员都需要自己的Apple帐户和/或许可吗?
为清晰起见编辑:我只是想了解在上述场景中遵守许可证需要做些什么.当然不是想以便宜的方式逃脱或绕过任何东西.
我正在使用Maven插件(jacoco-maven-plugin)生成一个站点报告,其图像和css文件位于前面的文件夹中.(点)在名称中.例如:/site/jacoco/.resources/report.css
当我将它发布到我的pages.github.com网站(使用site-maven-plugin)时,我的特殊Github分支(gh-pages)中的所有内容都存在.
但是,当我尝试访问具有前面的文件夹中的资源时,我得到了404.(点)文件夹名称.
一个简单的例子:https:
//github.com/justinhrobbins/FlashCards_App/blob/gh-pages/test/.resources/index.html
当我尝试在浏览器中访问它时,我得到一个404:http:
//justinhrobbins.github.io/FlashCards_App/test/.resources/index.html
但是,如果我删除了.(点)从文件夹名称它工作正常:
https://github.com/justinhrobbins/FlashCards_App/blob/gh-pages/test/resources/index.html
http://justinhrobbins.github.io/FlashCards_App/test/资源/ index.html的
所以我假设pages.github.com不支持文件夹名称中的前面的点(并且使用前面的点的谷歌搜索显示可能不是推荐的做法)但是会感谢确认.
编辑:仅供参考 - 当我发布类似于Tomcat时,它甚至可以使用名称前面带有点的文件夹
我可以指定ObjectMapperSpring RestTemplate使用的Jackson 吗?
我不是100%这就是我需要做的,但请参阅下面的详细信息。
背景: 在此StackOverflow帖子的帮助下,我在域类中添加了@JsonFilter并编辑了我的jax-rs Web服务(在CXF中实现)。现在,我可以成功地动态选择要在我的RESTful API中返回的域类字段。到目前为止,一切都很好。
我在JUnit测试中使用Spring的RestTemplate来测试RESTful API。在我将@JasonFilter添加到我的域类之前,它一直运行良好。现在,我得到以下异常:
org.springframework.web.client.ResourceAccessException:I / O错误:无法解析ID为'apiFilter'的BeanPropertyFilter。未配置FilterProvider;嵌套的异常是org.codehaus.jackson.map.JsonMappingException:无法解析ID为'apiFilter'的BeanPropertyFilter。未配置FilterProvider
在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:453)
为简洁起见,其余的堆栈跟踪被省略
引起原因:org.codehaus.jackson.map.JsonMappingException:无法解析ID为'apiFilter'的BeanPropertyFilter。未配置FilterProvider
在org.codehaus.jackson.map.ser.BeanSerializer.findFilter(BeanSerializer.java:252)
我在服务器端遇到了类似的问题,并且可以通过给Jackson 如下所示来解决此问题(在此职位的帮助下):FilterProviderObjectMapper
ObjectMapper mapper = new ObjectMapper();
FilterProvider filters = new SimpleFilterProvider().addFilter("apiFilter", SimpleBeanPropertyFilter.filterOutAllExcept(filterProperties));
Run Code Online (Sandbox Code Playgroud)
我可以在RestTemplate端做类似的事情吗?任何有关如何解决此问题的想法都将受到赞赏。
为了清楚起见,在客户端RestTemplate端,我根本不想过滤域对象属性。
hibernate ×2
android ×1
android-c2dm ×1
api ×1
appcelerator ×1
bpmn ×1
business-process-management ×1
cassandra ×1
cordova ×1
facebook ×1
github-pages ×1
hikaricp ×1
hybrid ×1
ios ×1
jackson ×1
jacoco ×1
java ×1
jax-rs ×1
jersey ×1
jersey-2.0 ×1
jpa ×1
licensing ×1
mysql ×1
spring ×1
struts2 ×1
tomcat ×1