小编Dou*_*kem的帖子

如何删除Java Servlet中的Cookie

如何删除Java servlet中的cookie?

我试过这个:http: //www.jguru.com/faq/view.jsp?EID = 42225

编辑:以下现在成功运作它似乎是以下的组合:

response.setContentType("text/html");
Run Code Online (Sandbox Code Playgroud)

cookie.setMaxAge(0);
Run Code Online (Sandbox Code Playgroud)

在我做之前:

//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(-1);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud)

根据文档关闭浏览器时,cookie会过期.

负值表示cookie不会持久存储,并在Web浏览器退出时被删除.零值会导致cookie被删除.

要使Cookie过期的完整工作代码段是:

//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud)

java cookies servlets

130
推荐指数
5
解决办法
19万
查看次数

如何在Maven中读取外部属性文件

有谁知道如何在Maven中读取x.properties文件.我知道有一些方法可以使用资源过滤来读取属性文件并从中设置值,但是我想在我的pom.xml中使用以下方法:

<properties file="x.properties"> 

</properties>
Run Code Online (Sandbox Code Playgroud)

有一些讨论: Maven外部属性

java maven-2 build properties-file

122
推荐指数
3
解决办法
17万
查看次数

从shell脚本调用JMX MBean方法

是否有任何库允许我从shell脚本调用JMX MBean方法.我们通过JMX公开了一些操作/管理命令,我们可以让我们的管理员使用JConsole或VisualVM,但有些任务最好留给自动化.在那个自动化中,我们希望能够在运行的服务器上调用JMX MBean方法,最好是从shell脚本调用.

java sysadmin jmx

95
推荐指数
5
解决办法
12万
查看次数

在父模块上执行Maven插件目标,但不在子模块上执行

我们有一个多模块maven项目,它使用一个定义buildnumber-maven-plugin的配置文件来增加内部版本号,然后将其检入源代码控制.

如果我在父pom.xml中定义插件,它也会为所有子构建执行.

这是我的父pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                      http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.webwars</groupId>
  <artifactId>parent</artifactId>
  <packaging>pom</packaging>
  <properties>
    <buildNumber.properties>${basedir}/../parent/buildNumber.properties</buildNumber.properties>
  </properties>
  <version>1.0-SNAPSHOT</version>
  <name>Parent Project</name>
  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <debug>false</debug>
              <optimize>true</optimize>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.0-beta-3</version>
            <executions>
              <execution>
                <phase>validate</phase>
                <goals>
                  <goal>create</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <buildNumberPropertiesFileLocation>${buildNumber.properties}</buildNumberPropertiesFileLocation>
              <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
              <doCheck>false</doCheck>
              <doUpdate>false</doUpdate>
              <format>{0, number}</format>
              <items>
                <item>buildNumber</item>
              </items>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <executions>
              <execution>
                <phase>install</phase>
                <goals>
                  <goal>checkin</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <basedir>${basedir}</basedir>
              <includes>buildNumber.properties</includes>
              <message>[Automated checkin] of ${basedir} Build version: ${major.version}.${minor.version}.${buildNumber}</message>
              <developerConnectionUrl>...</developerConnectionUrl>
            </configuration> …
Run Code Online (Sandbox Code Playgroud)

versioning version-control build-process maven-2

58
推荐指数
3
解决办法
2万
查看次数

最佳循环成语,用于特殊外壳的最后一个元素

我在做简单的文本处理和打印语句时经常遇到这种情况,我循环一个集合,我想要特殊情况下的最后一个元素(例如,除了最后一个例子,每个普通元素都将以逗号分隔).

是否有一些最佳实践习惯或优雅的形式,不需要复制代码或在if循环中推..

例如,我有一个字符串列表,我想在逗号分隔列表中打印.(虽然解决方案已经假设列表中有2个或更多元素,否则它就像使用条件的更正确的循环一样糟糕).

例如List =("dog","cat","bat")

我想打印"[狗,猫,蝙蝠]"

我提出了两种方法

  1. 对于有条件的循环

    public static String forLoopConditional(String[] items) {
    
    String itemOutput = "[";
    
    for (int i = 0; i < items.length; i++) {
        // Check if we're not at the last element
        if (i < (items.length - 1)) {
            itemOutput += items[i] + ", ";
        } else {
            // last element
            itemOutput += items[i];
        }
    }
    itemOutput += "]";
    
    return itemOutput;
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 做循环启动循环

    public static String doWhileLoopPrime(String[] items) {
    String itemOutput = "[";
    int i …
    Run Code Online (Sandbox Code Playgroud)

java loops idioms while-loop

48
推荐指数
5
解决办法
2万
查看次数

从shell脚本中的文件中提取版本号

我正在尝试编写一个bash脚本,该脚本会增加给出的版本号

{major}.{minor}.{revision}
Run Code Online (Sandbox Code Playgroud)

例如.

1.2.13
Run Code Online (Sandbox Code Playgroud)

是否有一种很好的方法可以使用像sed或awk这样的东西轻松提取这3个数字,这样我就可以增加{revision}数字并输出完整的版本号字符串.

bash shell scripting sed

31
推荐指数
6
解决办法
2万
查看次数

使用Javascript和处理onorientationChange的iPhone UIWebView本地资源

我正在尝试从iPhone应用程序的本地资源中提供HTML Javascript和CSS内容,而且我在处理onOrientationChange事件和包括外部Javascript时遇到了问题.

我似乎能够正确地链接CSS但不是javascript.我正在尝试使用以下处理onOrientationChange的示例(如何构建iPhone网站),但我正在从我的应用程序的NSBundle mainBundle提供网页.

我尝试将一个javascript函数附加到body.onorientationchange和window.onorientationchange,但是当从本地(或远程)从UIWebView提供时,它都不起作用,但是如果我正在使用iPhone Safari,它就可以工作.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>How to build an iPhone website</title>

    <meta name="author" content="will" />
    <meta name="copyright" content="copyright 2008 www.engageinteractive.co.uk" />
    <meta name="description" content="Welcome to engege interactive on the iPhone!" />
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">
    <link rel="apple-touch-icon" href="images/template/engage.png"/>

    <style type="text/css">
        @import url("iphone.css");
    </style>
    <!--
    <script type="text/javascript" src="orientation.js"></script>
    -->
    <script type="text/javascript">


function updateOrientation(){
    try  {
        var contentType = "show_normal";
        switch(window.orientation){
            case …
Run Code Online (Sandbox Code Playgroud)

iphone uiwebview

29
推荐指数
3
解决办法
4万
查看次数

当另一个进程修改数据库时,Hibernate二级缓存失效

我们有一个使用Hibernate的二级缓存来避免数据库命中的应用程序.

我想知道当一个外部进程如MySQL管理员直接连接修改数据库(更新/插入/删除)时,是否有一些简单的方法可以使Java应用程序的Hibernate二级缓存无效.

我们使用EHCache作为我们的二级缓存实现.

我们混合使用@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)和@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE),并且我们没有在每个实体上使用时间戳启用Optimistic并发控制.

SessionFactory包含管理二级缓存的方法: - 管理缓存

sessionFactory.evict(Cat.class, catId); //evict a particular Cat
sessionFactory.evict(Cat.class);  //evict all Cats
sessionFactory.evictCollection("Cat.kittens", catId); //evict a particular collection of kittens
sessionFactory.evictCollection("Cat.kittens"); //evict all kitten collections
Run Code Online (Sandbox Code Playgroud)

但是因为我们使用@Cache注释单个实体类,所以我们没有"可靠"(例如没有手动步骤)将其添加到列表的中心位置.

// Easy to forget to update this to properly evict the class
public static final Class[] cachedEntityClasses = {Cat.class, Dog.class, Monkey.class}

public void clear2ndLevelCache() {
  SessionFactory sessionFactory = ...   //Retrieve SessionFactory

   for (Class entityClass : cachedEntityClasses) {
       sessionFactory.evict(entityClass);
   }
}
Run Code Online (Sandbox Code Playgroud)

Hibernate的二级缓存没有真正的方法来知道数据库中的实体发生了变化,除非它查询该实体(缓存正在保护您的实体).因此,作为一种解决方案,我们可以简单地调用一些方法来强制二级缓存驱逐一切(再次因为缺乏锁定和并发控制,您可能会因"读取"或更新过时数据而导致进程中的事务风险).

database hibernate transactions ehcache second-level-cache

25
推荐指数
4
解决办法
2万
查看次数

分布式事务和/或群集中共享数据的Java解决方案

集群/分发Java服务器应用程序的最佳方法是什么?我正在寻找一种方法,允许您通过添加更多应用程序服务器和更多数据库服务器来水平扩展.

  • 您会建议采用哪些技术(软件工程技术或特定技术)来解决此类问题?
  • 您使用什么技术设计持久层以扩展到许多读取器/写入器扩展应用程序事务并扩展对共享数据的访问(最佳方法是消除共享数据;您可以应用哪些技术来消除共享数据).
  • 似乎需要使用不同的方法,具体取决于您的事务是读取还是写入繁重,但我觉得如果您可以优化"写入"繁重的应用程序,这对于"读取"也是有效的

"最佳"解决方案允许您为单个节点编写Java应用程序,并希望"隐藏"访问/锁定共享数据的大部分细节.

在分布式环境中,最困难的问题总是归结为多个事务访问共享数据.似乎有两种常见的并发事务方法.

  1. 显式锁(在分布式系统中的多个节点之间极易出错并且协调速度很慢)
  2. 软件事务内存(STM)AKA乐观并发,如果事务发现共享状态已更改(并且稍后可以重试事务),则在提交期间回滚事务.哪种方法可以更好地扩展,在分布式系统中有哪些权衡取舍?

我一直在研究扩展解决方案(以及提供如何扩展的示例的一般应用程序),例如:

  1. Terracotta - 通过使用Java的并发锁定机制(synchronized,ReentrantReadWriteLocks)扩展Java内存模型以包含分布式共享内存,提供"透明"扩展.
  2. 谷歌应用程序引擎的Java -让您可以在您分发哪个服务器处理事务写,将当中的"云"服务器进行分布式Java(或Python)的应用程序和使用BigTable的存储持久性数据(不知道你的交易是如何访问共享数据或处理锁定争用,以便能够有效扩展)
  3. 暗星MMO服务器 -暗星是Sun的开源MMO(大型多人在线),他们规模在一个线程事务的方式交易,允许一个给定的事务,只进行了一定的运行,并承诺,如果它需要长期将回滚游戏服务器(有点像软件事务内存).他们一直在研究支持多节点服务器设置以进行扩展.
  4. Hibernate的乐观锁定 - 如果你使用的是Hibernate,你可以使用它们的乐观并发支持来支持软件事务内存类型的行为
  5. Apache CouchDB应该自然地以网状配置"扩展"到许多读写器DB.(有一个很好的例子,说明如何管理锁定数据或确保事务隔离?):
  6. JCache - 通过将结果缓存到可以在Google appengine中使用的常见查询来扩展"读取"繁重的应用程序,以访问memcached并缓存其他经常读取的数据.

Terracotta似乎是最完整的解决方案,因为您可以"轻松"修改现有服务器应用程序以支持扩展(在定义@Root对象和@AutoLockRead/Write方法之后).问题是要真正从分布式应用程序中获得最大的性能,分布式系统的优化实际上并不是一个想法,你必须设计它,知道对象访问可能被网络I/O阻止.

为了正确扩展,似乎总是归结为分区数据和负载平衡事务,例如给定的"执行单元"(cpu core - > thread - >分布式应用程序节点 - > DB主节点)

似乎通过群集使任何应用程序可以正确扩展,您需要能够根据数据访问读/写对事务进行分区.人们提出了哪些解决方案来分发他们的应用程序数据(Oracle,Google BigTable,MySQL,数据仓库),以及一般如何管理分区数据(许多写入主数据库,以及更多读取数据库等).

在扩展数据持久层方面,在将数据划分给许多读者/多个编写者方面,哪种类型的配置最佳扩展(通常我会基于给定用户(或通常是您的任何核心实体)对数据进行分区"root"对象实体)由单个主DB拥有

java concurrency scalability transactions optimistic-locking

21
推荐指数
1
解决办法
5919
查看次数

AVAudioPlayer重置当前播放的声音并从头开始播放

我在使用AVAudioPlayer时遇到问题,我想重置一个播放器,如果它正在播放并重新播放.

我试着以下没​​有运气:

声音播放一次,但第二次我选择按钮停止声音,第三次再次启动声音.

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    [player stop];
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用player.currentTime = 0来表示会重置播放器,这不起作用,我也尝试重置currentTime = 0然后调用不起作用的播放.

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    player.currentTime = 0;
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}
Run Code Online (Sandbox Code Playgroud)

iphone audio core-audio avaudioplayer

16
推荐指数
1
解决办法
9140
查看次数