使用Oracle Wallet身份validation从Spring-jdbc连接到Oracle DB

我使用Spring-jdbc和org.apache.commons.dbcp.BasicDataSource使用用户名和密码进行连接。 我想使用BasicDataSource,因为我只有一个连接。 我有这个代码: 现在我必须使用基于Oracle Wallet的身份validation,在没有Spring的简单应用程序测试中我没有问题,但我无法将此新身份validation与Spring集成。 有谁知道我怎么做?

在PDFBox中,为什么保存后文件大小会变得非常大?

题 我正在使用PDFBox 1.8.8来处理现有的PDF文件。 保存文档后,输出文件将比原始文件大几倍。 这是不可取的。 如何减小输出文件的文件大小? 如何复制我的情况 在以下代码中,PDFBox只是加载现有PDF然后保存。 没有别的办法。 然而,文件大小仍然变大了几倍。 以下是两个示例输入文件的链接。 对于input1.pdf,文件大小从6MB增加到50MB。 对于input2.pdf,文件大小从0.4MB增加到1.3MB。 https://dl.dropboxusercontent.com/u/13566649/samplePDF/input1.pdf https://dl.dropboxusercontent.com/u/13566649/samplePDF/input2.pdf import java.io.*; import org.apache.pdfbox.pdmodel.*; import org.apache.pdfbox.exceptions.*; class Test { public static void main(String[] args) throws IOException, COSVisitorException { PDDocument document = PDDocument.load(“input1.pdf”); document.save(“output.pdf”); document.close(); } } 我试过的 我已经尝试使用addCompression()类的addCompression()方法,如下面的代码所示。 它没有改变任何东西。 输出文件大小仍然相同。 class Test2 { public static void main(String[] args) throws IOException, […]

如何使用弹簧安全性保护混合Spring MVC + Flex应用程序

我试过在Spring论坛上问这个问题( http://forum.springsource.org/showthread.php?109948-Problem-configuring-spring-security-3.1-with-hybrid-Spring-MVC-Flex-application )但是没有得到回应。 我正在开发一个Web应用程序,它具有内置Flex的(最终用户)用户界面和使用Spring MVC构建的管理用户界面。 我正在尝试保护两个接口,并且可以让每个接口单独工作,但不能一起工作。 我正在使用带有Spring Security 3.1RC1和Spring 3.1M1的spring-flex-core 1.5.0的快照构建 如果我只包含没有pattern属性的第一个http标记,则flex UI似乎使用Spring安全性成功进行身份validation。 但是,如果我包含所有标签,那么根据我是否使用,我会得到两个错误之一 这使 SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: The filter chain map already contains this request matcher [Root bean: class [org.springframework.security.web.util.AnyRequestMatcher]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]. If […]

如何将大输出写入Process getOutputStream?

我正在尝试使用ProcessBuilder和Process执行命令(例如ps -ef | grep apache)。 只要’ps -ef’的输出很小,代码就可以工作。 但如果输出太大,程序就会挂起。 有没有办法来解决这个问题? 这是基于[ http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html]的代码 #### Program.java #### import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; public class Program { private List command; public Program(String commandString) throws IOException { this(commandString, null); } public List getCommand() { return this.command; } […]

Java中用于非ASCII字符的URL解码

我正在尝试使用Java来解码包含%编码字符的URL 我已经尝试使用java.net.URI类来完成这项工作,但它并不总是正常工作。 String test = “https://fr.wikipedia.org/wiki/Fondation_Alliance_fran%C3%A7aise”; URI uri = new URI(test); System.out.println(uri.getPath()); 对于测试字符串“ https://fr.wikipedia.org/wiki/Fondation_Alliance_fran%C3%A7aise ”,结果是正确的“/ wiki/Fondation_Alliance_française”(%C3%A7被ç正确替换)。 但对于其他一些测试字符串,如“ http://sv.wikipedia.org/wiki/Anv%E4ndare:Lsjbot/Statistik#Drosophilidae ”,它会给出错误的结果“/ wiki /Anv ndare:Lsjbot / Statistik”( %E4替换为 而不是ä)。 我用getRawPath()和URLDecoder类进行了一些测试。 System.out.println(URLDecoder.decode(uri.getRawPath(), “UTF8”)); System.out.println(URLDecoder.decode(uri.getRawPath(), “ISO-8859-1”)); System.out.println(URLDecoder.decode(uri.getRawPath(), “WINDOWS-1252”)); 根据测试字符串,我得到不同编码的正确结果: 对于%C3%A7,我得到了正确的“UTF-8”编码结果,并且“ISO-8859-1”或“WINDOWS-1252”编码结果不正确 对于%E4,情况正好相反。 对于这两个测试url,如果我将它们放入Chrome地址栏,我会获得正确的页面。 如何在所有情况下正确解码URL? 谢谢你的帮助 ====回答==== 感谢McDowell在下面回答的建议,它现在似乎有效。 这是我现在的代码: private static void appendBytes(ByteArrayOutputStream buf, String data) throws UnsupportedEncodingException { byte[] b = […]

如果RequestBody参数的某些属性为null,如何返回400 HTTP错误代码?

我有以下示例: 这是请求正文: public class UserLoginData implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; //… getter and setters } 这是控制器: @RequestMapping(value = {“/login”}, method = RequestMethod.POST) @ResponseBody public LoginResponse login(@RequestBody(required = true) UserLoginData loginData){ //… some code } 这是我调用服务的方式: POST /login {“username”:”neuquino”} 我希望Spring返回HTTP 400 BAD REQUEST错误,因为密码丢失了。 但不是这样,它返回HTTP 500 […]

停止Tomcat不会删除Derby db.lck

(编辑:我已经为问题添加了一笔赏金。我找到了一个解决方法(在下面发布的答案),但我希望有人可以解释为什么首先需要解决方法。) 我有一个Spring webapp,它在开发过程中连接到Derby数据库。 这在第一次运行webapp时工作正常,但在后续运行中,它在启动时失败,“Derby的另一个实例可能已经启动了数据库”SQLException。 我知道这是因为当我关闭Tomcat时,与Derby的连接没有被关闭,即使我希望Spring自动处理它。 所以我的问题是,如何正确断开与Derby的连接? 不仅在手动停止Tomcat期间,而且在热部署新的.war文件期间? 我想避免使用Derby服务器,我也使用注释而不是XML配置。 这是我原来的PersistConfig类: package com.example.spring.config; import java.beans.PropertyVetoException; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.derby.jdbc.EmbeddedDataSource; import org.hibernate.SessionFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.SimpleDriverDataSource; import org.springframework.jdbc.datasource.embedded.ConnectionProperties; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseConfigurer; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.orm.hibernate4.HibernateExceptionTranslator; import org.springframework.orm.hibernate4.HibernateTransactionManager; import org.springframework.orm.hibernate4.LocalSessionFactoryBean; import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.vendor.Database; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.annotation.EnableTransactionManagement; […]

什么是primefaces?

这是两个primefaces操作: int value = 5; Object obj = new Object(); 但是当使用原语作为方法参数时,这会被视为primefaces操作: public void setValue(int val, Object obj){ this.value = val; // Atomic? this.obj = obj; // Not atomic? } public void setValue(int val, Object obj){ this.value = val; // Atomic? this.obj = obj; // Not atomic? } ? 对象引用的副本不是primefaces的,因为它包含读取和写入,对吧? 说对象引用进行primefaces操作的唯一方法是将其声明为null或为其分配新对象,如: Object obj = null; 和 […]

交叉字段validation(JSR 303)问题

我有一个简单的bean,即: public class MyBean { private boolean selected; private String someString; … } 因此,如果selected为true,我希望someString为@NotNull等。 任何提示,链接如何实现这种行为? 谢谢Jonny

在此字符串操作期间将创建多少个对象?

下面是实例方法中的代码片段 String x = new StringBuffer().append(“a”).append(“b”).append(“c”).toString() 我受到印象,首先创建一个新的stringbuffer,然后在字符串缓冲区的附近添加a,类似于b和c。 之后,将stringbuffer转换为字符串。 因此,就我而言,创建了2个对象(一个用于字符串缓冲区,另一个用于字符串)。 正确? 基本上,就我而言,不会为字符串“a”,“b”,“c”创建中间对象。 这是正确的吗? 编辑: – 根据所有的回复,看起来像字符串文字“a”,“b”,“c”的对象,但如果我通过链接http://docs.oracle.com/javase/1.4。 2 / docs / api / java / lang / StringBuffer.html#toString (),这不应该创建临时字符串。 搜索“总的来说,这可以避免创建许多临时字符串。” 在这个链接上。 同意它适用于1.4.2,但我希望1.6的基本保持不变 是的,如果我在下面而不是超过五个对象将被创建。 三个为“a”,“b”,“c”。 一个字符串缓冲区。 然后最后是从stringbuffer转换的字符串。 对于“a”,“b”,“c”以及最后一个字符串“abc”的对象将太过池并且终生存在 String str1=”a”; String str2=”b”; String str3=”c”; String x = new StringBuffer().append(str1).append(str2).append(str3).toString() 以上理解是否正确?