我简要介绍了Maxine,这是一个用Java编写的开源JVM实现.这对我来说是圆形的.如果java需要运行虚拟机,那么虚拟机本身如何用Java编写(VM代码不会需要运行的VM,依此类推?).
编辑:好的,所以我看到我忽略了Java不必在VM中运行的事实.那么如何解释如何在LISP中编写LISP编译器?或者这应该是一个新问题?
我有一个非常简单的场景,涉及应用程序服务器(Glassfish)中的数据库和JMS.场景很简单:
1. an EJB inserts a row in the database and sends a message.
2. when the message is delivered with an MDB, the row is read and updated.
Run Code Online (Sandbox Code Playgroud)
问题是有时在数据库中提交插入之前传递消息.如果我们考虑2阶段提交协议,这实际上是可以理解的:
1. prepare JMS
2. prepare database
3. commit JMS
4. ( tiny little gap where message can be delivered before insert has been committed)
5. commit database
Run Code Online (Sandbox Code Playgroud)
我和其他人讨论过这个问题,但答案总是如此:"奇怪,它应该开箱即用".
我的问题是:
以下是关于我对问题的理解的更多细节:
只有在按此顺序处理参与者时才存在此计时问题.如果2PC以相反的顺序(数据库优先,然后是消息代理)处理参与者应该没问题.这个问题是随机发生的,但完全可以重现.
我发现无法在Glassfish文档中控制JTA,JCA和JPA规范中分布式事务中参与者的顺序.我们可以假设它们将在使用它们时按照顺序登记在分布式事务中,但是使用诸如JPA之类的ORM,很难知道何时刷新数据以及何时真正使用数据库连接.任何的想法?
我用ejb创建了一个namedquery来检查是否使用了用户名.当singleResult为null时,我得到以下异常:
javax.persistence.NoResultException: getSingleResult() did not retrieve any entities
Run Code Online (Sandbox Code Playgroud)
但是这个例外是我想要的用户名是免费的结果.
这是代码:
public User getUserByUsername(String username) throws DAOException{
try{
Query q = em.createNamedQuery(User.getUserByUsername);
q.setParameter("username", username);
return (User) q.getSingleResult();
}catch(Exception e){
throwException(username, e);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道问题是什么.:(
我想返回null并且不会得到异常.
非常感谢你
我正在寻找JBoss上部署的EJB的入口点.
Servlet具有load-on-startup 要在其中使用的 标记web.xml.
我正在init()为EJB 寻找类似的功能.
JLS在类型推断算法(第15.12.2节)中提到:
上述过程有可能产生无限类型.这是允许的,Java编译器必须识别这种情况并使用循环数据结构恰当地表示它们.
但是,我无法找到javac生成无限类型的实际示例.我认为在下列情况下应该产生一个:
<T> T pick(T a, T b) { ... }
pick("string", 3);
Run Code Online (Sandbox Code Playgroud)
String和Integer都是Comparable <themselve>,因此它们的常用超类型应该是Comparable<? extends Comparable<? extends Comparable<? ...>>>(无限的).
我可以:
Comparable<? extends Comparable<?>> x = pick("string", 3);
Run Code Online (Sandbox Code Playgroud)
但后来我试过了:
Comparable<? extends Comparable<? extends Comparable<?>>> x = pick("string", 3);
Run Code Online (Sandbox Code Playgroud)
这不编译.似乎递归在两个步骤后中止.
您是否知道Java实际上会产生无限类型?
-
编辑:似乎以上是编译器错误.阅读规范,让我们看看如何计算lub(String, Integer):
ST(String) = { String, Comparable<String>, Serializable, CharSequence, Object }
ST(Integer) = { Integer, Comparable<Integer>, Serializable, Number, Object }
EC = { Comparable, Serializable, Object }
MEC = { Comparable, Serializable }
Inv(Comparable) …Run Code Online (Sandbox Code Playgroud) 我在托管bean中有一个方法,它返回javascript作为字符串.从headtag中调用该方法时,它可以正常工作.但是当它被调用时body,浏览器而不是渲染javascript会按原样写入.可能是什么问题?
在我的JSF页面中,当我#{IndexBean.EastRegionGadgets}在head其中工作正常但它不在body.它按原样输出HTML.这是代码:
package BusinessFacade;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.html.HtmlOutputText;
enum REGION{
NORTH,EAST,WEST;
}
class Gadget{
private String gadgetCode = "";
private REGION gadgetRegion = REGION.WEST;
public Gadget(String gadgetCode, REGION gadgetRegion){
this.gadgetCode = gadgetCode;
this.gadgetRegion = gadgetRegion;
}
public String getGadgetCode() {
return gadgetCode;
}
public void setGadgetCode(String gadgetCode) {
this.gadgetCode = gadgetCode;
}
public REGION getGadgetRegion() {
return gadgetRegion;
}
public void setGadgetRegion(REGION gadgetRegion) { …Run Code Online (Sandbox Code Playgroud) 我正在开发一个在线文件管理项目.我们在数据库(sql server)上存储引用,并在文件系统上存储文件数据.
当我们上传文件时以及删除文件时,我们正面临文件系统和数据库之间的协调问题.首先,我们在数据库中创建引用或在文件系统上存储文件.
问题是如果我先在数据库中创建一个引用然后将文件存储在文件系统上,但是在文件系统上存储文件时会发生任何类型的错误,那么该文件的引用是在数据库中创建的但没有文件数据存在于文件系统中.
请给我一些解决方案如何处理这种情况.我非常需要它.
我们删除文件时也会发生这种情况?
我习惯使用padding+ background-image在链接旁边放置一个图标.
这种方法有很多例子.这是从这里来的一个:
<a class="external" href="http://www.othersite.com/">link</a>
a.external {
padding-right: 15px;
background: transparent url(images/external-link-icon.gif) no-repeat top right;
}
Run Code Online (Sandbox Code Playgroud)
但大多数浏览器都不打印背景图片,这很烦人.
在链接旁边放置图标的标准是什么,这些标准在语义上是正确的并适用于所有情况?
编辑
CSS :before和:after?这是推荐的做法吗?
a.test:after {
padding-right: 5px;
content: url(../pix/logo_ppk.gif);
}
Run Code Online (Sandbox Code Playgroud) 我有一个对象myObject,我不确定是谁持有它的参考.(我想知道,因为我正在逆向工程.)
我在检查器中找到了"指向此值的对象"按钮,但它没有显示任何内容,即使我创建另一个指向的对象,如下所示:
OrderedCollection new add: self ; inspect
Run Code Online (Sandbox Code Playgroud)
很明显,那个按钮坏了!那么,我如何获得所有引用对象?
我正在使用Moose 4.6图像.
我们想在 HQL 中使用两列进行左外连接两个表的连接。
连接的第二列在逻辑级别没有相关性,并且不会以任何方式限制结果集。它是分区键,仅用作加速物理数据访问的优化。
在 SQL 中,它类似于
select *
from t1
left outer join t2
on t1.id = t2.parent_id
and t1.partion_key = t2.partition_key
Run Code Online (Sandbox Code Playgroud)
我们尝试的以下方法不起作用:
我们可以在 HQL 中进行外连接,left join fetch并且可以在连接中指定附加条件, with但两者不能结合在一起。文档中明确提到了此限制:“Fetch 也不应与即席条件一起使用”。
使用额外的 where 条件t1.partion_key = t2.partition_key不起作用,因为它将查询的语义从外连接更改为内连接:当没有数据匹配时,条件不成立并且行被忽略。
使用 oracle 语法t1.partion_key = t2.partition_key (+)也不起作用,因为它会导致 SQL 查询混合了 ANSI 和 Oracle 语法。
我们虽然考虑使用组合键,但它并不是真正正确的,因为在逻辑级别,键只是id. 我们不想让物理数据建模(分区)影响逻辑模型。
我们如何用 HQL 表达所需的查询?