用于bean的CDI @TransactionAttribute

我正在测试应用程序上试验CDI 。 我有一个DAO ,它注入一个容器管理的JTA持久化上下文,如下所示: public class TestDAO implements Serializable { @PersistenceContext private EntityManager entityManager; public void insertEntity(Test test) { entityManager.persist(test); } } 现在我有一个像这样的CDI控制器bean: @Named @SessionScoped public class TestController implements Serializable { @Inject private TestDAO testDAO; public void finishGame() { testDAO.insertEntity(new Test(1, 2, 3)); } } 如果我运行它,我在尝试插入实体时在DAO收到错误,因为没有可用的活动事务。 到现在为止还挺好。 我可以通过使控制器bean成为有状态EJB来解决这个问题,它将把finishGame()包装在事务中。 但是假设我不想要EJB 。 作为测试,我使用@TransactionAttribute注释注释了finishGame()并且它有效(控制器bean不是EJB )。 所以我的问题是:它是如何工作的? CDI是否为普通bean定义了@TransactionAttribute ? […]

使用JSCH Java反向SSH隧道

是否可以使用JSCH进行反向ssh连接? 如果不是,是否还有其他纯Java库可用于进行反向隧道SSH连接? 我想模仿的命令类似于: ssh -fN -R 7000:localhost:22 username@yourMachine-ipaddress

Enum元素如何在内部排列或链接?

在Java中,Enum是一种特殊的datatype ,通过查看单词datatype,我得到了一些问题,比如它在内存中预定义的内存大小,或者Enum的元素是否设置为任何data structure如Queue以便快速访问。 根据Java doc The enum declaration defines a class (called an enum type). The enum class body can include methods and other fields. The compiler automatically adds some special methods when it creates an enum The enum declaration defines a class (called an enum type). The enum class body can include methods and […]

javax.faces.context.FacesContext.isReleased(FacesContext.java:609)中的java.lang.UnsupportedOperationException

我正在集成SWF 2.2.1,Primefaces 2.2.1,JSF 2,Spring Security 3,Spring 3.1.0M1。 我能够点击我在Spring web-flow xml中提到的第一页,但是出现了以下错误。 com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException SEVERE: Error Rendering View[/WEB-INF/flows/AccSrch/searchAccIns.xhtml] java.lang.UnsupportedOperationException at javax.faces.context.FacesContext.isReleased(FacesContext.java:609) at com.sun.faces.context.PartialViewContextImpl.updateFacesContext(PartialViewContextImpl.java:468) at com.sun.faces.context.PartialViewContextImpl.isAjaxRequest(PartialViewContextImpl.java:108) at javax.faces.context.PartialViewContextWrapper.isAjaxRequest(PartialViewContextWrapper.java:117) at javax.faces.component.UIViewRoot.getRendersChildren(UIViewRoot.java:1020) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at org.springframework.faces.webflow.FlowViewHandler.renderView(FlowViewHandler.java:99) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at org.springframework.faces.webflow.FlowLifecycle.render(FlowLifecycle.java:80) at org.springframework.faces.webflow.JsfView.render(JsfView.java:90) 令我惊讶的是,我的.xhtml中只有最少的代码 请参阅此post以获取上下文链接

预定义接口的抽象方法如Connection,Statement等如何在没有主体的情况下执行某些任务?

在Java中有许多预定义的接口,如ResultSet , Connection , Statement等。接口只能有抽象方法(未实现的方法)。所以我们为什么要使用那些方法而不先定义它们。 例如,在以下jdbc代码中 public class JDBCSample { public static void main( String args[]) { String connectionURL = “jdbc:postgresql://localhost:5432/movies; user=java;password=samples”;` try { Class.forName(“org.postgresql.Driver”); Connection con = DriverManager.getConnection (connectionURL); Statement stmt = con.createStatement(); ResultSet rs = stmd.executeQuery(“select moviename, releasedate from movies”); while (rs.next()) {….do something…..} }catch (SQLException e) {e.printStackTrace();} catch (Exception e) { e.printStackTrace();}} […]

智能垂直流量布局

我在JPanel布局(Swing)中寻找以下行为:基本上它会以垂直方式排列组件,一个相互吼叫。 当组件无法垂直放入容器中时,它应该在新行中添加下一个组件。 这将继续动态,根据需要添加新行。 添加3个标签后,看起来会像这样: +————————–+ | label1 | | label2 | | label3 | +————————–+ 添加:2个以上的标签: +————————–+ | label1 label4 | | label2 label5 | | label3 | +————————–+ 最后,添加2个标签后,它看起来像这样: +————————–+ | label1 label4 label7 | | label2 label5 | | label3 label6 | +————————–+ 使用当前布局之一可以实现此行为吗? 我应该自己创建吗? 你会如何解决这个问题?

将原始数组转换为Object并返回

我有这个 int [] abc = new int[30]; Object arr = abc; 我如何将arr回int[] ?? 即 int [] foo = (int[])arr 另外,如果arr可以指向int[]或byte[] ,如何区分它们? 我检查了arr.getClass().getName()返回[I和arr.getClass().isPrimitive()为false 。 必须是另一种检测它的方法吗? 谢谢。 PS。 我必须在我的数组中使用原始类型。

Android:无效的资源文件

我刚刚下载了最新的Android Studio 3.0 Preview Canary 2 。 它用最新的gradle com.android.tools.build:gradle:3.0.0-alpha2更新了我的项目。 现在我有很多编译崩溃,如: ERROR: C:\Users\??????\\.gradle\caches\transforms-1\files-1.1\appcompat-v7-25.3.1.aar\a33e01f0d19405567201ecab1e032796\res\drawable-xhdpi-v4\notification_bg_low_normal.9.png not a valid resource file ERROR: C:\Users\??????\\.gradle\caches\transforms-1\files-1.1\appcompat-v7-25.3.1.aar\a33e01f0d19405567201ecab1e032796\res\drawable-xhdpi-v4\notification_bg_low_normal.9.png not a valid resource file ERROR: C:\Users\??????\\.gradle\caches\transforms-1\files-1.1\design-25.3.1.aar\ab2edc05ef7bbad4b3861a867a381098\res\drawable-xxxhdpi-v4\design_ic_visibility.png not a valid resource file ERROR: C:\Users\??????\\.gradle\caches\transforms-1\files-1.1\design-25.3.1.aar\ab2edc05ef7bbad4b3861a867a381098\res\drawable-xxxhdpi-v4\design_ic_visibility.png not a valid resource file ERROR: C:\Users\??????\\.gradle\caches\transforms-1\files-1.1\appcompat-v7-25.3.1.aar\a33e01f0d19405567201ecab1e032796\res\drawable-mdpi-v4\abc_menu_hardkey_panel_mtrl_mult.9.png not a valid resource file ERROR: C:\Users\??????\\.gradle\caches\transforms-1\files-1.1\appcompat-v7-25.3.1.aar\a33e01f0d19405567201ecab1e032796\res\drawable-mdpi-v4\abc_menu_hardkey_panel_mtrl_mult.9.png not a valid resource file ERROR: C:\Users\??????\\.gradle\caches\transforms-1\files-1.1\appcompat-v7-25.3.1.aar\a33e01f0d19405567201ecab1e032796\res\drawable-xxxhdpi-v4\abc_spinner_mtrl_am_alpha.9.png not […]

找到所有哈密顿循环

我正在尝试实现一种方法,使用递归将所有可能的哈密顿循环添加到列表中。 到目前为止,我的停止条件还不够,我在向列表中添加顶点的行中得到“OutOfMemoryError:Java堆空间”: private boolean getHamiltonianCycles(int first, int v, int[] parent, boolean[] isVisited, List<List> cycles) { isVisited[v] = true; if (allVisited(isVisited) && neighbors.get(v).contains(new Integer(first))) { ArrayList cycle = new ArrayList(); int vertex = v; while (vertex != -1) { cycle.add(vertex); vertex = parent[vertex]; } cycles.add(cycle); return true; } else if (allVisited(isVisited)) { isVisited[v] = false; return […]

无法使用Xuggler对video进行编码

我正在尝试使用Xuggler创建简单的应用程序,Xuggler必须将图像序列编码为video。 我已经安装了xuggler,如官方网站所述。 这是代码示例(我实际上在Xuggler维基站点上找到了) import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.xuggle.mediatool.IMediaViewer; import com.xuggle.mediatool.IMediaWriter; import com.xuggle.mediatool.ToolFactory; import com.xuggle.xuggler.ICodec; import static com.xuggle.xuggler.Global.DEFAULT_TIME_UNIT; import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.concurrent.TimeUnit.MILLISECONDS; public class Test { private static final Logger log = LoggerFactory.getLogger(Test.class); { log.trace(“”); } public static void main(String[] args) { final long duration = DEFAULT_TIME_UNIT.convert( […]