IBM曾经有一个功能包将JPA 2.0放入WAS 7.WAS 8.5.5显然带有JPA 2.0.但我们有一个应用程序,我们刚刚升级到Hibernate 4,需要JPA 2.1.我找不到WAS 8.5功能包的链接以推送到JPA 2.1.
还有其他人在WAS 8.5中使用过Hibernate 4吗?如果是这样,怎么样?如果没有功能包,我们会在javax.persistence类上获得NoSuchMethodError.
RAD 7,WebSphere 7.
IBM的web-bnd.xml:
<resource-ref name="jdbc/devl" binding-name="jdbc/devl" />
Run Code Online (Sandbox Code Playgroud)
web.xml中:
<resource-ref>
<res-ref-name>jdbc/devl</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope>
<mapped-name>jdbc/devl</mapped-name>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
这符合我在互联网上看到的例子.这是因为我正在将此应用程序转换为servlet 2.5.据我了解,web.xml中的res-ref-name应该与resource-ref中的name属性匹配.然后,绑定名称与管理控制台中定义的数据源匹配.为了简单起见,我让它们都匹配.
某个地方还有其他设置吗?因为这会产生问题标题中描述的错误.
我之前问过以下问题: DB2查询未知列名ERRORCODE = -4460,SQLSTATE = null
我们已经了解到,从db2jcc.jar(JCC)更改db2jcc.jar(UNIVERSAL)可以解决我们开发环境中的问题.问题是那些不起作用的是新的.我们不想在没有正当理由的情况下倒退我们的司机.但是我不理解上述链接中的查询在新驱动程序中无效的原因.
我们知道它就是那个专栏...如果我们通过强制一个空的空间把它从结果中取出来,一切都可行(除了我们没有得到数据).该查询在其他环境中工作正常.
我看到一些帖子暗示这个错误与结果集元数据getColumn()方法在JDBC3和JDBC4之间不一致有关.但是我们在这个查询中并没有做任何特殊的事情,而这在其他许多查询中都没有,至少在我们所知的情况下并没有这么做.
有谁知道这个查询可能是什么设置?是否有针对此行为的修复程序...某些设置或解决方法,还是新驱动程序?
完整的例外情况:
com.ibm.db2.jcc.a.SqlException:[jcc] [10150] [10300] [4.3.111]无效参数:未知>列名FILTER_VALUE_DECODE.ERRORCODE = -4460,SQLSTATE =空处com.ibm.db2.jcc.a.dd.a com.ibm.db2.jcc.a.dd.a(dd.java:660)(dd.java:60)在com.ibm.db2.jcc.a.dd.a(dd.java:103)的com.ibm.db2.jcc.a.ib.a(ib.java:1674)com.ibm.db2.jcc .a.yl.a(yl.java:1625)在com.ibm.db2.jcc.a.yl.getString(yl.java:1468)在com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getString(WSJdbcResultSet的.java:2467)在org.hibernate.type.StringType.get(StringType.java:41)在org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)在org.hibernate.type.NullableType.nullSafeGet( NullableType.java:210)在org.hibernate.loader.custom.CustomLoader $ ScalarResultColumnProcessor.extract(CustomLoader.java:501)在org.hibernate.loader.custom.CustomLoader $ ResultRowProcessor.buildResultRow(CustomLoader.java:447)在组织.hibernate.loader.custom.CustomLoader.getResultColumnOrRow(CustomLoader.java:344)在org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:647)在org.hibernate.loader.Loader.doQuery(Loader.java:745 )在org.hibernate.loader.Loader .doQueryAndInitializeNonLazyCollections(Loader.java:270)org.hibernate.loader.Loader.doList(Loader.java:2294)... 64更多
我们有一个在websphere 7中使用hibernate,spring和DB2的应用程序.我们有审计触发器,我们需要设置,以便触发器可以知道登录用户(我们使用通用登录到数据库).我们想出了一个新的方案,用于在新的应用程序中设置它,以便它可以自动加入新的交易.我们覆盖了事务管理器并在doBegin中完成了工作.
这些方案在一个应用程序中运行良好,并且似乎在第二个应用程序中运行良好,但现在,几周后,并且不一致(行为是间歇性的,并且在本地开发中不会发生),我们正在获得此预绑定JDBC连接错误.在线查看大多数帖子都说这是针对一个数据源使用两个事务管理器的时候.现在就是我们正在做的事情.
我还读了一篇文章,想知道是不是因为他混合了注释和基于AOP的交易.这个应用程序做了一些.我真的不买那个理论,但我想我会提到它.
例外:
Caused by:
org.springframework.transaction.IllegalTransactionStateException: Pre-bound JDBC Connection found! HibernateTransactionManager does not support running within DataSourceTransactionManager if told to manage the DataSource itself. It is recommended to use a single HibernateTransactionManager for all transactions on a single DataSource, no matter whether Hibernate or JDBC access.
at java.lang.Throwable.<init>(Throwable.java:67)
at org.springframework.core.NestedRuntimeException.<init>(NestedRuntimeException.java:54)
at org.springframework.transaction.TransactionException.<init>(TransactionException.java:34)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:475)
at gov.usdoj.afms.umc.utils.hibernate.AfmsHibernateTransactionManager.doBegin(AfmsHibernateTransactionManager.java:28)
Run Code Online (Sandbox Code Playgroud)
代码(注意异常来自super.doBegin()):
protected void doBegin(Object arg0, TransactionDefinition arg1) {
super.doBegin(arg0, arg1);
if (!Db2ClientInfo.exists()) {
clearDBProperty();
} else {
setDBProperty(Db2ClientInfo.getClientUserId(), Db2ClientInfo.getClientApplicationId());
}
}
private …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我们是Quartz用户的新手,编写我们的第一个Quartz任务.我们的任务正在运行,但显然我们想要了解如何管理它们.我们在Spring中配置它们就像这样:
<bean name="enoteExpirationTask" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="gov.usdoj.afms.enote.job.DailyExpirationJob" />
<property name="jobDataAsMap">
<map>
<entry key="messageService" value-ref="enoteMessageService" />
<entry key="logicalDeleteAge" value="${expiryProcess.logical.age}" />
<entry key="physicalDeleteAge" value="${expiryProcess.physical.age}" />
</map>
</property>
</bean>
<bean id="cronEnoteExpirationTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="enoteExpirationTask" />
<property name="cronExpression" value="0 0 7 * * ?" />
</bean>
Run Code Online (Sandbox Code Playgroud)
问题1:我可以让Quartz重新读取这个配置,这样如果我在运行时改变它,它会改变它的时间表吗?这将是最简单的解决方案,但我们没有看到任何内容.我希望我们错过了一些东西.
问题2:如果没有,我理解应该有第三方工具来做到这一点,Teracotta就是其中之一.是否有任何开源或免费软件实用程序可以让您非常简单地更改计划?
问题3:如果没有,编写一个小Java实用程序会涉及到什么?写一个是值得的吗?或者Teracotta是否有足够的增值值,你会建议买它?如果是这样,我可以向管理层出售的功能有何不同?
在log4j中,我们有时会创建第二个记录器并将CSV数据输出到它作为应用程序的度量表.这些数据很容易导入和绘制,而不是我们用于调试的普通日志等.
在旧的log4j中,我们通过继承PatternLayout,覆盖header属性并将其指定为:
log4j.logger.servicePerformance=INFO, servicePerformance
log4j.appender.servicePerformance=mypackage.log4j.SingleHeaderFileAppender
log4j.appender.servicePerformance.File=logs/performance.log
log4j.appender.servicePerformance.layout=mypackage.log4j.HeaderLayout
log4j.appender.servicePerformance.layout.ConversionPattern=%m%n
log4j.appender.servicePerformance.layout.Header=Start Time, Service Invoked, Elapsed ms, Candidate Count, Asset Count
log4j.additivity.servicePerformance=false
Run Code Online (Sandbox Code Playgroud)
我不知道如何在log4j 2中执行此操作,我们现在有两个应用程序最近转换为使用.
我已经阅读了一些SO答案,说JAXB有一个错误,它归咎于XML的性质,导致它无法使用UTF-8.我的问题是,那么解决方法是什么?我可能会将用户输入的unicode字符复制并粘贴到我需要保存,编组,解组并在其他地方重新显示的数据字段中.
(更新)更多背景信息:
Candidate c = new Candidate();
c.addSubstitution("3 4ths", "\u00BE");
c.addSubstitution("n with tilde", "\u00F1");
c.addSubstitution("schwa", "\u018F");
c.addSubstitution("Sigma", "\u03A3");
c.addSubstitution("Cyrillic Th", "\u040B");
jc = JAXBContext.newInstance(Candidate.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
ByteArrayOutputStream os = new ByteArrayOutputStream();
marshaller.marshal(c, os);
String xml = os.toString();
System.out.println(xml);
jc = JAXBContext.newInstance(Candidate.class);
Unmarshaller jaxb = jc.createUnmarshaller();
ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes());
Candidate newCandidate = (Candidate) jaxb.unmarshal(is);
for(Substitution s:c.getSubstitutions()) {
System.out.println(s.getSubstitutionName() + "='" + s.getSubstitutionValue() + "'");
}
Run Code Online (Sandbox Code Playgroud)
这是一个小测试位,我把它们放在一起.我得到的确切字符并非完全由我控制.用户可以将带有波形符号的N粘贴到字段中或其他任何内容.