如何从servlet中可移植地读取配置数据

我正在编写一个需要读取一些特定于站点的配置数据的Java servlet; 我希望系统管理员在部署时可以轻松访问/修改它。 没有合理的默认值,因此数据必须由站点管理员提供。 它由几个字符串键/值对组成(想想属性)。 它只会被读取一次(在初始化时)。 我知道这个SO问题和ServletContext.getInitParameter()机制,但据我的理解,它们需要将数据捆绑在servlet包中(作为属性文件,或在web.xml指定) ),这使得升级servlet代码变得不方便。 servlet是否有任何“标准”接口来获取这种键/值配置数据? 如果编程接口在任何地方都相同,那就没问题,但设置配置数据的实际方式取决于所使用的实际servlet容器。 我更喜欢便携式解决方案,但我会满足于仅适用于Tomcat和Jetty的东西。

Servlet与REST

我需要在服务器端创建5个方法,这将使用二进制数据。 远程客户端是applet和JavaScript。 客户端将文件发送到服务器,服务器必须解析这些文件,然后以XML / JSON的forms返回响应。 所以我很困惑 – 在这种情况下使用REST服务是一种好习惯吗? 或者我应该使用servlet? 我的同事说我: “创建仅由一个应用程序使用的REST服务并不好。只有在许多应用程序使用REST时才能创建REST。而REST比servlet有一些缺点:REST比servlet慢;它更难以编写线程安全的REST比servlet“ 但是,我看到使用Servlet的一些缺点:我需要发送一个我想调用的函数名(即作为额外的HTTP参数发送函数名),然后在doPost方法中执行以下开关: switch(functionName) { case “function1”: function1(); break; case “function2” function2(); break; //…. more `case` statements…. } 在REST的情况下,我可以简单地使用不同的URL来实现不同的function。 此外,在REST的情况下,从服务器返回JSON / XML更方便。 谢谢。

JavaMail smtp属性(适用于STARTTLS)

JavaMail指定了一组可以设置为配置SMTP连接的属性。 要使用STARTTLS,必须设置以下属性 mail.smtp.starttls.enable=true 在哪里指定用户名/密码才能使用smtp服务? 是否足以指定: mail.smtp.user=me mail.smtp.password=secret 或者我必须使用以下方法明确登录: transport.connect(server, userName, password) 是的,我已经尝试过这样做,似乎有必要使用transport.connect(..)进行连接。 但如果是,mail.smtp.user和pass属性是什么? 他们还不足以使用smtp和starttls吗?

HttpURLConnection实现

我已经读过HttpURLConnection支持持久连接,因此可以为多个请求重用连接。 我尝试了它,发送第二个POST的唯一方法是第二次调用openConnection。 否则我得到一个IllegalStateException(“已经连接”); 我使用了以下内容: try{ URL url = new URL(“http://someconection.com”); } catch(Exception e){} HttpURLConnection con = (HttpURLConnection) url.openConnection(); //set output, input etc //send POST //Receive response //Read whole response //close input stream con.disconnect();//have also tested commenting this out con = (HttpURLConnection) url.openConnection(); //Send new POST 第二个请求是通过相同的TCP连接发送的(通过wiresharkvalidation)但我无法理解为什么(虽然这是我想要的)因为我已经调用了disconnect。 我检查了HttpURLConnection的源代码,并且实现确实保持了对相同目标的连接的keepalive缓存。 我的问题是,在发送第一个请求后,我无法看到连接如何放回缓存中。 断开连接关闭连接,没有断开连接,仍然无法看到连接如何放回缓存。 我看到缓存有一个run方法来遍历所有空闲连接(我不确定它是如何被调用的),但是我找不到连接如何放回缓存中。 似乎唯一发生的地方是httpClient的完成方法,但是没有调用具有响应的POST。 谁可以帮我这个事? 编辑我的兴趣是,对于tcp连接重用,HttpUrlConnection对象的正确处理是什么。 应该关闭输入/输出流,然后是url.openConnection(); 每次发送新请求(避免disconnect())? […]

Maven BOM 依赖性

我不明白bom对象的目的是什么? 我正在使用Spring 3.2.8版本和JBoss服务器,所以我需要使用哪个bom依赖项? 当我在pom.xml中提到以下依赖项时: org.springframework spring-framework-bom 4.0.1.RELEASE pom import jar文件是否会下载到我的Maven依赖项中?

如何使用java.Set

我试图让它工作很长一段时间,但似乎无法得到它。 我有Block的Block塔。 我已经使用数组工作了,但我想学习Set的。 我想得到类似的function: public class Tower { public Tower(){ } public Tower add(Block k1){ //(…) //if block already in tower, return “Block already in tower” } public Tower delete(Block k1){ //(…) //if block already dleted, show “No such block in tower” } } 有人给了我一些代码,但在尝试使用时我经常遇到错误: Set tower = new HashSet(); boolean added = tower.add( k1 […]

Java map,key = class,value =该类的实例

我不确定我想做什么是可能的,但如果是的话,我想知道如何做。 基本上,我想创建一个Map,其中键是一个类( java.lang.Class ),该条目的值是该类的一个实例。 目前我有 private Map<Class, Object> myMap = new HashMap<Class, Object>(); 但是,这意味着任何Object都可以放在Map中。 如果可能的话,我想制作它,因此只有键中类的一个实例可以放在地图中。 有没有办法使用? 对Class进行参数化以确保这一点? 此外,我发现在做这样的事情时可能会有内存泄漏 。 我不确定我是否完全理解这是怎么发生的。 我只会将单个对象粘贴到地图中,那么是否仍会出现内存泄漏问题? 如果是这样,我该如何预防呢?

生成概率分布

给定一个大小为n的数组我想为每个索引生成随机概率,使得Sigma(a[0]..a[n-1])=1 一个可能的结果可能是: 0 1 2 3 4 0.15 0.2 0.18 0.22 0.25 另一个完全合法的结果可能是: 0 1 2 3 4 0.01 0.01 0.96 0.01 0.01 如何轻松快速地生成这些内容? 任何语言的答案都很好,Java首选。

试图了解Java RSA密钥大小

钥匙发生器的尺寸为1024,那么为什么印刷尺寸为635和162? import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; public class TEST { public static KeyPair generateKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(“RSA”, “BC”); keyPairGenerator.initialize(1024); return keyPairGenerator.generateKeyPair(); } public static void main(String[] args) throws Exception { KeyPair keyPair = generateKeyPair(); RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); RSAPublicKey publicKey = (RSAPublicKey) […]

Arrays.sort()和Arrays.parallelSort()之间的区别

正在阅读这里提到的Java 8function。 无法理解parallelSort()确切作用。 有人可以解释sort()和parallelSort()之间的实际区别是什么?