如何区分Ajax请求和正常的Http请求?

我在我的应用程序中使用JSF框架。 我需要在Phase Listener类中的呈现响应阶段之前运行特定脚本。 运行此脚本的条件是,如果触发的请求是Ajax请求,则需要运行脚本,如果触发的请求是Http请求,则不应运行该脚本。 任何人都可以帮我区分收到的请求。?

以编程方式使用JPA 2.0加载实体类?

使用Hibernate,您可以将Entity类加载为: sessionFactory = new AnnotationConfiguration() .addPackage(“test.animals”) .addAnnotatedClass(Flight.class) .addAnnotatedClass(Sky.class) .addAnnotatedClass(Person.class) .addAnnotatedClass(Dog.class); 有没有办法做同样的事情 – 以编程方式加载您的实体类 – 以符合JPA 2.0的方式? 这个问题的原因是因为我想动态加载我的Entity类,因此不一定以编程方式。

@PostConstruct方法为同一请求调用两次

我正在使用JSF 2.0和GlassFish 3.0。 我有以下Managed Bean: @ManagedBean @RequestScoped public class OverviewController{ private List eventList; @PostConstruct public void init(){ System.out.println(“=> OverviewController – init() – enter”); System.out.println(“=< OverviewController – init() – exit"); } } 在overview.xhtml文件中,我从OverviewController中调用了不同的属性或方法。 … 一切正常,但问题出在日志文件中: INFO: Enter : RESTORE_VIEW 1 INFO: Exit : RESTORE_VIEW 1 INFO: Enter : RENDER_RESPONSE 6 INFO: => OverviewController – init() – […]

在Windows上检查Java中文件是否为空的最有效方法

我试图在Windows上用Java检查日志文件是否为空(意味着没有错误)。 到目前为止,我尝试过使用2种方法。 方法1(失败) FileInputStream fis = new FileInputStream(new File(sLogFilename)); int iByteCount = fis.read(); if (iByteCount == -1) System.out.println(“NO ERRORS!”); else System.out.println(“SOME ERRORS!”); 方法2(失败) File logFile = new File(sLogFilename); if(logFile.length() == 0) System.out.println(“NO ERRORS!”); else System.out.println(“SOME ERRORS!”); 现在,当日志文件为空(没有内容)时,这些方法都会失败,但文件大小不为零(2个字节)。 检查文件是否为空的最有效和最准确的方法是什么? 我要求提高效率,因为我必须循环检查文件大小数千次。 注意:文件大小只会徘徊在几到10 KB左右! 方法3(失败) 按照@ Cygnusx1的建议,我也尝试过使用FileReader ,但没有成功。 这是片段,如果有人感兴趣的话。 Reader reader = new FileReader(sLogFilename); int readSize = reader.read(); […]

使用序列时,Hibernate会生成负的id值

我有一个具有以下定义的类: @Id @SequenceGenerator(name = “SEQ_ACE_WORKERS_QUEUE_STATS_ID”, sequenceName = “SEQ_ACE_WORKERS_QUEUE_STATS_ID”, allocationSize = 500) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “SEQ_ACE_WORKERS_QUEUE_STATS_ID”) @Column(name = “ID”) private long Id; 当我们在Jboss 4.2.3上运行它时它工作正常并生成了正确的ID(从1000+开始) 现在我们转到jboss 7.1.1并生成负ID! (从-498开始上升) 知道为什么会这样吗?

以编程方式从PEM获取KeyStore

如何以编程方式从包含证书和私钥的PEM文件中获取KeyStore? 我试图通过HTTPS连接向服务器提供客户端证书。 我已经确认,如果我使用openssl和keytool获取jks文件,我会动态加载客户端证书。 我甚至可以通过动态读取p12(PKCS12)文件来使其工作。 我正在研究使用BouncyCastle的PEMReader类,但我无法解决一些错误。 我正在运行带有-Djavax.net.debug = all选项的Java客户端和带有调试LogLevel的Apache Web服务器。 我不知道该寻找什么。 Apache错误日志表明: … OpenSSL: Write: SSLv3 read client certificate B OpenSSL: Exit: error in SSLv3 read client certificate B Re-negotiation handshake failed: Not accepted by client!? Java客户端程序指示: … main, WRITE: TLSv1 Handshake, length = 48 main, waiting for close_notify or alert: state 3 main, Exception while […]

使用时区将字符串转换为日期

我在模式yyyy-MM-dd hh:mm a中有一个字符串,我可以单独获取时区对象,其中上面的字符串表示日期。 我想将其转换为以下格式。 yyyy-MM-dd HH:mm:ss Z. 我怎样才能做到这一点?

Java http客户端和POODLE

关于POODLE漏洞,如果我理解正确,它需要客户端在未能与服务器使用更高版本协议的服务器建立安全通道时自动将TLS协议降级为SSLv3。 常见的Java HTTP客户端库,特别是javax.net.ssl.HttpsURLConnection和Apache HttpClient,在无法与服务器建立TLS会话时会自动降级TLS协议吗? 如果没有,我是否正确他们不受POODLE攻击的影响,除非(a)服务器仅支持SSLv3,或(b)更高级别的逻辑执行降级? 我正在寻找像http://blog.hagander.net/archives/222-A-few-short-notes-about-PostgreSQL-and-POODLE.html这样的东西,但是对于Java客户端。

jersey 2:如何创建自定义HTTP参数绑定

我正在尝试为我的restful服务创建一个自定义的http param绑定。 请参阅下面的示例。 @POST @Path(“/user/{userId}/orders”) @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public MyResult foo(@PathParam(“userId”) String someString, @UserAuthHeaderParam String authString){ } 您可以看到函数签名中有UserAuthHeaderParam注释。 我想要做的是有一个自定义的http param绑定,而不是标准的javax.ws.rs。* Param。 我试图实现org.glassfish.hk2.api.InjectionResolver,它基本上从http头中提取值: public class ProtoInjectionResolver implements InjectionResolver{ … @Override public Object resolve(Injectee injectee, ServiceHandle root) { return “Hello World”; } … } 当我调用restful服务时,服务器会获得exception。 它表明框架无法解析函数签名中的参数: org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee(requiredType=String,parent=MyResource,qualifiers={}),position=0,optional=false,self=false,unqualified=null,2136594195), java.lang.IllegalArgumentException: While […]

java:如何通过管道读取和写入进程(stdin / stdout)

(我是java的新手)我需要启动一个进程并接收2个或3个句柄:对于STDIN,STDOUT,(和STDERR),所以我可以向进程写入输入并接收其输出,与命令行管道相同表现(例如“grep”) 在Python中,这是通过以下代码实现的: from subprocess import Popen, PIPE p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE) (child_stdin, child_stdout) = (p.stdin, p.stdout) child_stdin.write(‘Yoram Opposum\n’) child_stdin.flush() child_stdout.readlines() 什么是Java等价物? 到目前为止我已经尝试过了 Process p = Runtime.getRuntime().exec(cmd); BufferedReader inp = new BufferedReader( new InputStreamReader(p.getInputStream()) ); BufferedWriter out = new BufferedWriter( new OutputStreamWriter(p.getOutputStream()) ); out.write( “Some Text!\n\n” ); out.flush(); line = inp.readLine(); print(“response1: ” + […]