我有一个管理3个数据库的应用程序.我在seam框架上使用了带JPA的hibernate.
所以我有一个persitence.xml文件,有三个像这样的persitence-unit(我删除了db2和db3的属性):
<persistence-unit name="db1" transaction-type="JTA" >
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>db1source</jta-data-source>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.connection.driver_class"
value="oracle.jdbc.driver.OracleDriver" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.default_schema" value="SI_TEC" />
<property name="hibernate.validator.apply_to_ddl" value="false" />
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />
</properties>
</persistence-unit>
<persistence-unit name="db2" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>d2source</jta-data-source>
</persistence-unit>
<persistence-unit name="db3" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>d3source</jta-data-source>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
在我的seam components.xml文件中,我使用我的hibernate配置创建了3个managed-persistence-context来映射seam.
最后,我有几个实体,我的问题就在这里.我需要在db2和db3中的其他实体中保留一些实体.所以数据库模式是不同的,当我部署我的应用程序时,我收到此错误:
org.hibernate.HibernateException: Missing table: PORTAILPERMISSION
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1113)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
Truncated. see log file for complete stacktrace
Run Code Online (Sandbox Code Playgroud)
因为,db2中不存在表PORTAILPERMISSION. …
简单地说,我不能:
HTTPS推送
SSH推送
我是Java Threads和同步的新手.
让我们说:
public class MyClass(){
public synchronized void method1(){
//call method2();
}
public synchronized void method2(){};
}
Run Code Online (Sandbox Code Playgroud)
当我同步一个method1()实例对象时它意味着什么?因此,当一个线程在尝试访问时获取锁定时synchronized method1(),是否会阻止其他线程synchronized method2()从同一个对象访问另一个线程?
让我们说一个线程在访问method1()时获取一个锁,但是让我们说这也是method1()一个调用.这有可能吗?我的意思是有任何规则可以阻止呼叫吗?method2()synchronizedmethod1()method2()
提前致谢.
显然在实体bean中使用无状态EJB bean会有异味,但请考虑如下方案并告诉我您是否知道更好的解决方案:
InvoiceTemplate带有字段的实体BeanNextInvoiceDateNextInvoiceDate是一个复杂的过程,应该在InvoiceTemplate课外进行NextInvoiceDate应该每次都更新InvoiceTemplate存储到db现在我有关于实体bean NextInvoiceDate中的@PrePersist @PreUpdatemethon 生成的逻辑InvoiceTemplate.逻辑变得越来越复杂,我想将它移到InvoiceTemplate实体bean之外.它在我看来应该有一个服务来计算NextInvoiceDate.但那么从内部调用这项服务是否正确InvoiceTemplate?
我正在使用multipart将文件上传到服务器URLLoader.我可以上传文件.我试图在URLLoader上侦听progress事件,但它只在上传的最后触发.如何通过上传更加一致地获得进度事件?
从Spring API,我明白@InitBinder用于初始化一些绑定规则..
在petclinic的例子中为什么我们有setdisallowed("id")?当id没有显示在表单上时?
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
dataBinder.setDisallowedFields("id");
}
Run Code Online (Sandbox Code Playgroud)
id字段没有显示在网页上,那么为什么我们使用上面的代码呢?
我们可以有这样的事情:
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
dataBinder.setDisallowedFields("FirstName");
}
Run Code Online (Sandbox Code Playgroud)
根据上面的代码,虽然用户在表单上输入,但不会设置所有者对象的名字字段?那是对的吗?
An Id作为Url参数传入.我试着确保它id是一个数字.如果没有重定向到主页面
if(facilityId != null){
try{
Long.parseLong(facilityId);
}catch(NumberFormatException e){
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("DisplayList.jsf");
} catch (IOException ex) {}
}
facility = documentSBean.findFacilityById(Long.parseLong(facilityId));
...
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我传入这样的id
www....?facilityId=3?sdfasfda
Run Code Online (Sandbox Code Playgroud)
我发现这3?sdfasfda不是一个数字,并且转到redirect语句,但它没有正确地重定向,它执行下一对试图转换3?sdfasfda为Long的行,因此产生NumberFormatException.那么有没有办法立即强制重定向,或者是否有其他方法来解决这个问题.希望有一个else后catch:D:D.上面的代码在我的@PostConstruct init()方法中
很抱歉这个问题必须经过多次询问,但我无法成功解决问题.我已经阅读了很多博客,网站,论坛......并且在我的案例中找不到任何解决方案.
案例: 我需要将我的盒子上的VisualVM连接到远程服务器(tomcats,weblogics)以进行性能/线程/内存监控.这些服务器安装在受防火墙保护的(物理或虚拟)计算机上.防火墙中可以使用大间隔的端口,但可以使用,但不是所有端口.
测试
-Djava.rmi.server.hostname=[hostname]
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=[port]
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
我已经预先设置了主机名,因为从我的网络中,主机名和服务器的IP地址与远程服务器网络中的主机名和IP地址不同.
没有成功,VisualVM似乎总是在寻找未知的服务器.
尝试在服务器端从可访问的端口(-p选项)启动jstatd从我的盒子(此端口上的telnet工作),但是当使用jstatd端口在此主机上启动visualVM时,它似乎仍在等待无法访问的东西...... .Jps连接到此远程主机的行为相同.
尝试在网络保护较少的服务器上使用相同的工具,并且它可以工作.所以我看到了我的盒子和服务器之间的连接,它们是在不同于我指定的jstatd的端口上完成的.据我所知,第一次通信需要这个端口(握手类型),真正的通信是在其他端口上完成的,但不可预测(例如:60305,55197,...).我不确定我很清楚RMI是如何工作的.
拜托,帮助我,我疯了!
我正在阅读Effective Java并阅读静态工厂方法来创建对象.其第2章,第1项.有优势没有.3,作者提到了喜欢
以这种方式隐藏实现类可以产生非常紧凑的API.此技术适用于基于接口的框架,其中接口为静态工厂方法提供自然返回类型.
我无法理解基于接口的框架是什么?
@RequestMapping(..)
@ResponseBody
public SearchResponse search(SearchRequest request) throws SearchException { .. }
Run Code Online (Sandbox Code Playgroud)
我想回到请求者:
SearchException抛出JSON序列化的异常详细信息.第一部分工作正常(杰克逊在类路径上<mvc:annotation-driven />),但我没有看到一个简单的方法将异常序列化为json.
我可以注册一个自定义处理程序,并从那里写一个JSON字符串,但我可能还需要XML序列化,这意味着我将需要处理程序中的条件.那不是有什么准备好的吗?