我可以动态卸载和重新加载(相同的其他版本)JAR吗?

我正在编写一个服务器程序,用于运行API的unit testing(显示大量信息并提供Web访问来控制/监控整个事物)… 此API 在编译期间为服务器所知,并作为JAR提供。 为了能够比较不同版本 API的unit testing结果(无需重新启动服务器),我希望能够卸载API的“当前”版本,并重新加载较新版本(或较旧的版本) 。 我不想使用URLClassLoader并按名称调用每个方法 (使用getDeclaredMethod(“someMethod”) ), 因为服务器在很大程度上依赖于API,以这种脏的方式“包装”每个方法调用会很复杂。 我在想:由于JAR的所有版本的所有接口都是相同的 ,我不能通过某种方式重新加载其他版本的JAR(没有那个by-name-invokation?)。 注意:我使用的是最新的Java SE(6)和Java EE(5)。 如果您认为,我想要实现的目标是不可能的,请提出“解决方法”或不同的概念。

Java使用特定格式的级别顺序打印二叉树

好的,我已经阅读了所有其他相关问题,但找不到有助于java的问题。 我从破译其他语言的内容中得到了一般性的想法; 但我还没搞清楚。 问题:我想进行排序(我使用递归工作)并将其打印出树的一般形状。 所以说我有这个: 1 / \ 2 3 / / \ 4 5 6 我的代码打印出这样的级别顺序: 1 2 3 4 5 6 我想像这样打印出来: 1 2 3 4 5 6 在你给我一个关于做我的工作的道德讲话之前……我已经完成了我的AP Comp Sci项目并且当我的老师提到了广度优先搜索的东西时对此感到好奇。 我不知道它是否会有所帮助,但到目前为止我的代码是: /** * Calls the levelOrder helper method and prints out in levelOrder. */ public void levelOrder() { q = new QueueList(); […]

当使用live选项时,jmap是否强制进行垃圾收集?

我今天一直在尝试使用jmap -histo和jmap -dump 按此顺序运行时 jmap -dump:format=b,file=heap.1 [pid] jmap -dump:live,format=b,file=heap.2 [pid] jmap -dump:format=b,file=heap.3 [pid] heap.3比heap.1 。 特别是,我在heap.1中感兴趣的“死”对象在heap.1中不存在。 看到这个,我开始寻找可以告诉我应该期待的文档。 我最接近的是这次讨论 ,来自briand和alanb的评论意味着在实践中我可以预期当我使用live选项时会发生这个GC; 但答案是五年了,论坛上的post对于规范来说似乎有些不正式。 我在哪里可以找到记录的当前行为?

使用Java中的GSON解析复杂的Json对象

我有一个非常长的JSON来解析Gson,但为了简洁起见,我将它修剪为这个例子: { “volumes”: [ { “status”: “available”, “managed”: true, “name”: “va_85621143-1133-412f-83b4-57a01a552638_”, “support”: { “status”: “supported” }, “storage_pool”: “pfm9253_pfm9254_new”, “id”: “afb8e294-6188-4907-9f6f-963c7623cecb”, “size”: 9 }, { “status”: “in-use”, “managed”: false, “name”: “bt_newd20”, “support”: { “status”: “not_supported”, “reasons”: [ “This volume is not a candidate for management because it is already attached to a virtual machine. To manage […]

在JSP中迭代List对象

我正在研究一个项目,试图教自己弹簧和支柱。 我目前停留在JSP页面上。 我有一个带变量eid的pojo类和带有getter / setter的ename,我在sql中也有一个表,其中包含六个填充行的相同值。 我通过JdbcTemplate访问我的数据库并将结果存储在列表中,然后我将此列表传递给我的操作页面,我将其设置为request.setAttribute(“empList”,eList) 。 在我的jsp页面中,我调用该属性,然后尝试使用JSTL迭代它。 但是没有任何显示,我知道我的列表变量中包含数据,因为我使用表达式标签检查它,对象显示如下: [org.classes.database.Employee@d9b02, org.classes.database.Employee@13bce7e, org.classes.database.Employee@171cc79, org.classes.database.Employee@272a02, org.classes.database.Employee@137105d, org.classes.database.Employee@1359ad] 我想也许我在jstl上遗漏了一些东西,但我的META-INF/lib文件夹中有jstl-1.2。 我也尝试在配置路径文件中添加它,但仍然没有。 我也有正确的标签url。 当我做一个简单的 。 你好打印出来。 所以这让我相信我的jstl工作正常,但是当我尝试使用jstl遍历我的列表时,根本没有任何显示。 无论如何这里是我的JSP页面: Employee Details Employee Details Employee ID: Employee Pass: 任何帮助将非常感谢!

避免在java中实例化一个类

最近我遇到了一个问题: 如何避免实例化Java类? 但是,我回答说: 如果您不想实例化类,请使用“abstract”修饰符。 例如:javax.servlet.HttpServlet被声明为抽象(尽管它的方法都不是抽象的)以避免实例化。 声明一个无参数的私有构造函数。 现在我的问题是a)还有其他方法吗? b)为什么任何人都不想实例化一个类? – 在搜索SO之后,我从中了解到Util类可以不实例化。 我们不想在OOP中实例化一个类的任何其他地方?

接口上用于强制一致性的静态方法的替代方法

在Java中,我希望能够定义标记接口,强制实现提供静态方法。 例如,对于简单的文本序列化/反序列化,我希望能够定义一个如下所示的接口: public interface TextTransformable{ public static T fromText(String text); public String toText(); 因为Java中的接口不能包含静态方法(如许多其他post/线程所述: 这里 , 这里 , 这里代码不起作用。 然而,我正在寻找的是表达相同意图的一些合理范例,即对称方法,其中一种是静态的,并由编译器强制执行。 现在我们能想到的最好的是某种静态工厂对象或通用工厂,这两者都不是真正令人满意的。 注意:在我们的例子中,我们的主要用例是我们有许多“值 – 对象”类型 – 枚举,或者具有有限数量值的其他对象,通常不会超出其值,并且我们解析/ de -parse数秒钟的时间,所以实际上关心重用实例(如Float,Integer等)及其对内存消耗的影响/ gc 有什么想法吗? 编辑1:为了消除一些混乱 – 我们有许多不同的对象适合这种模式 – 实际上我们正试图为具有2个语义的调用者提供优雅的东西: 作为合同的接口 – 访问的统一性(例如TextTransformable作为一种能力) 要求通过子类/实现实现(例如强制它们实现自己的转换 就我们对Flyweight,Factories的看法而言 – 它们都是我们考虑过的选项,我们真的试图看看我们是否能找到更优雅的东西,而不是依赖于JavaDoc说“实现工厂并委托调用它,或按惯例在XXX地点公开“

无法在Java和PHP之间交换使用AES-256加密的数据

我的问题是:我在Java中加密的东西我可以在Java中完美解密,但PHP mcrypt无法解密。 我用mcrypt加密的东西我可以用mcrypt解密,但不能用Java解密。 我想从Java应用程序发送和接收加密数据到PHP页面,所以我需要它兼容。 这就是我的…… JAVA … public static String crypt(String input, String key){ byte[] crypted = null; try{ SecretKeySpec skey = new SecretKeySpec(Base64.decodeBase64(key), “AES”); Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”); cipher.init(Cipher.ENCRYPT_MODE, skey); crypted = cipher.doFinal(input.getBytes()); }catch(Exception e){ } return Base64.encodeBase64String(crypted); } public static String decrypt(String input, String key){ byte[] output = null; try{ SecretKeySpec skey = […]

使用SimpleFramework解析日期

我收到一个XML响应,其属性包含以下值: Wed Sep 05 10:56:13 CEST 2012 我在我的模型类中定义了一个带注释的字段: @Attribute(name = “regDate”) private Date registerDate; 但是它引发了一个例外: java.text.ParseException: Unparseable date: “Wed Sep 05 10:56:13 CEST 2012” (at offset 0) 是否可以在SimpleFramework的注释中定义日期格式? 该日期字符串应包含哪种格式?

在WAR-File中定义Servlet上下文

如何在给出我的WAR-File时告诉Tomcat使用特定的上下文路径? 示例:我有一个由maven build创建的war文件,结果文件的名称相当长。 所以我不希望tomcat管理器应用程序使用war的文件名作为上下文。 在META-INF中提供context.xml不会产生所需的结果 我还在Context的path属性的文档中找到了这个: 除非在server.xml中静态定义Context,否则不得设置此字段的值,因为它将从用于.xml上下文文件或docBase的文件名中推断出来。 所以它似乎不是告诉应用程序服务器应该是什么路径的正确方法。 还有什么提示吗?