小编mck*_*mey的帖子

如何使用maven插件tomcat7:运行多个上下文(WAR)?

我一直在mvn tomcat7-maven-plugin:run -am -pl :foo成功使用Tomcat中的一个项目,如此处所示.现在我想让多个模块在相同的端口下运行但不同的上下文.例如,我想:

/    => foo.war
/bar => bar.war
Run Code Online (Sandbox Code Playgroud)

这是我一直在使用的示例pom.xml代码段:

<project><!-- ... -->
    <build><!-- ... -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.0-SNAPSHOT</version>
                    <configuration>
                        <path>/</path>
                        <port>8080</port>
                        <addContextWarDependencies>true</addContextWarDependencies>
                        <addWarDependenciesInClassloader>true</addWarDependenciesInClassloader>
                        <warSourceDirectory>${project.build.directory}/${project.build.finalName}/</warSourceDirectory>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>bar</artifactId>
                            <version>${project.version}</version>
                            <type>war</type>
                            <scope>tomcat</scope>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <pluginRepositories>
        <pluginRepository>
            <id>apache.snapshots</id>
            <name>Apache Snapshots</name>
            <url>http://repository.apache.org/content/groups/snapshots-group/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
     </pluginRepositories>
</project>
Run Code Online (Sandbox Code Playgroud)

这个tomcat7-maven-plugin:run插件可以实现吗?我很难找到正确的语法来让它发挥得很好.当我运行maven命令来运行它时,它只运行它在项目层次结构中找到的第一个命令.如果我使用<fork>true</fork>或显然从不同的终端运行它们然后我得到"java.net.BindException:地址已在使用:8080".

java deployment tomcat maven tomcat7

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

在GDI +中调整大小时的Ghost-border('振铃')

发生的事情(仅在某些图像上会引人注目)是我会看到1像素的白色边框插入一个像素.它似乎发生在轻而不是白色的区域(例如天空).它类似于某些东西过度锐化并且在高对比度边缘旁边可以看到鬼影边框.

这是完美再现它的repro代码.我正在使用所有最高质量的设置进行缩放.

ImageCodecInfo encoder = null;
EncoderParameters encoderParams = null;

foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders())
{
    if (codec.MimeType == "image/jpeg")
    {
        encoder = codec;

        // use highest quality compression settings
        encoderParams = new EncoderParameters(1);
        encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 100L);
        break;
    }
}

using (Bitmap input = (Bitmap)Bitmap.FromFile(inputPath, true))
{
    // shrink by multiple of 2
    Rectangle rect = new Rectangle(0, 0, input.Width/32, input.Height/32);

    using (Bitmap output = new Bitmap(rect.Width, rect.Height))
    {
        using (Graphics g = Graphics.FromImage(output))
        {
            // use highest …
Run Code Online (Sandbox Code Playgroud)

.net c# gdi+ resize

18
推荐指数
1
解决办法
5451
查看次数

JDK 1.7:由于POSIX信号量导致"打开文件太多"?

我已经查看了关于SO的其他类似问题,但它们似乎是由其他问题引起的.

首先,我确保我明智地关闭了所有文件句柄,然后我常常lsof -p <pid of java>查看我的文件列表.

它在整个运行时间内保持相当稳定,但随后定期我会得到大约10,000个条目,lsof如下所示:

COMMAND   PID USER   FD     TYPE DEVICE  SIZE/OFF     NODE NAME
                                      ...
java    36809  smm *235r  PSXSEM              0t0          kcms00008FC901624000
java    36809  smm *236r  PSXSEM              0t0          kcms00008FC901624000
java    36809  smm *237r  PSXSEM              0t0          kcms00008FC901624000
java    36809  smm *238r  PSXSEM              0t0          kcms00008FC901624000
java    36809  smm *239r  PSXSEM              0t0          kcms00008FC901624000
Run Code Online (Sandbox Code Playgroud)

手册页说PSXSEM类型是POSIX信号量.JDK使用POSIX信号量的任何线索?顺便说一句,该应用程序目前是一个单线程命令行应用程序.

潜在有用的背景:我在Mac OS X 10.7.3上升级到JDK 1.7后首先注意到这一点:

java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, …
Run Code Online (Sandbox Code Playgroud)

java file-io java-7

17
推荐指数
1
解决办法
2373
查看次数

Jetty Maven插件忽略了自定义webdefault.xml

我试图通过在webdefault.xml 中设置为false 的技术来解决Jetty在Windows锁定静态文件常见问题useFileMappedBuffer.不幸的是,Jetty每次都没有拿起我的自定义webdefault.xml.

我正在使用Apache Maven 3.0.2.我尝试过使用maven-jetty-plugin(v6.1.26)jetty-maven-plugin(v8.0.0.M2),但没有区别.在运行Jetty之前,我已经尝试过运行干净和重建.

我每次验证我的webdefault.xml是从与插件相同的版本获得并且具有正确的设置,即仅将此设置从true更改为false:

...
<init-param>
  <param-name>useFileMappedBuffer</param-name>
  <param-value>false</param-value>
</init-param>
...
Run Code Online (Sandbox Code Playgroud)

这是我的pom.xml Jetty插件部分的样子:

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <configuration>
        <contextPath>/</contextPath>
        <webDefaultXml>src/main/resources/webdefault.xml</webDefaultXml>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我也尝试改变文件的路径:

<webDefaultXml>${basedir}/src/main/resources/webdefault.xml</webDefaultXml>
Run Code Online (Sandbox Code Playgroud)

我到处都看到了这个确切的解决方案,听起来它正在为其他人工作(虽然我找到了一个有人有我问题的实例).jetty的启动在输出中有这个:

> mvn jetty:run
...
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
...
Run Code Online (Sandbox Code Playgroud)

这进一步让我觉得它没有得到应用.输出中的所有其他路径都是正确的.

我在Jetty运行时看到的最直接的问题是,每当我使用IntelliJ IDEA 10编辑静态文件(JavaScript,CSS等)时,我都会收到以下错误消息:

Cannot save file:
D:\...\... (The requested operation cannot be performed on a file with a user-mapped section open)
Run Code Online (Sandbox Code Playgroud)

在我停止Jetty后,它保存得很好.每次都会发生这种情况

我有什么想法可能做错了吗?提前致谢.

windows jetty maven-plugin maven-3 maven-jetty-plugin

14
推荐指数
1
解决办法
8320
查看次数

移动Webkit重排问题

我在webkit的移动版本中遇到了一个问题(特别是iOS 5.1.1上的Webkit 534.46作为移动版Safari,现在是iOS版Chrome),这在我见过的任何桌面浏览器上都没有.(即下面的演示应该在webkit的移动版本上查看.)

以下是该问题的实例.CSS的核心非常直接.它在页面左侧定位一个字母索引:

#index {
    left:0; margin:0; padding:0; position:fixed; top:0; width:3em;
}
Run Code Online (Sandbox Code Playgroud)

当元素固定在主体顶部的位置时会发生问题.它完全能够与滚动变化进行交互,然后停止接受输入.如果我(手动)摇动滚动甚至一个像素,那么它再次变为活动状态.该示例尽可能简单,不使用任何JavaScript.在真正锤击它之后,我发现该元素似乎认为它已滚动但已在视觉上固定.换句话说,如果您单击"A"然后再次尝试单击"A",有时您将再次单击,但它将位于列表的下方.这对我来说似乎是一个CSS回流问题.我知道移动webkit试图减少回流次数.

以下是变通方法的实例.

我能够使用JS来强制整个文档的CSS重新滚动滚动(使用限制,直到滚动后100ms才能发生这种情况)这似乎解决了这个简单示例中的问题.不幸的是,这对这个问题的真实版本没有帮助.

这是问题页面和变通方法脚本的代码.

我的问题是这里发生了什么,是否有一个我缺少的CSS解决方法?具体来说,我很好奇是否有任何CSS大师可以弄清楚布局情况是什么阻止点击击中固定元素上的正确位置?更好的理解可能有助于找到真正的解决方案.

编辑:我忘了提到该示例显式强制视口到窗口的大小.因此用户无法放大/缩小,这意味着position:fixed应该将元素锚定到窗口的左侧.

更新(2012-09-20):这似乎在iOS 6(以及UIWebView)的Mobile Safari中得到修复.任何解决方法都应首先检查以确保它在iOS <6上.例如,使用CssUserAgent,它看起来像:

if (parseFloat(cssua.ua.ios) < 6) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

webkit css-position touch css3 mobile-webkit

14
推荐指数
2
解决办法
9247
查看次数

AWS Java SDK中DynamoDB v2的迁移详细信息?

有没有人com.amazonaws.services.dynamodbv2在AWS Java SDK 1.4.2(及更高版本)中对DynamoDB 的新命名空间()和接口进行了更改?根据1.4.2发行说明,本地二级指数的发布显然需要进行重大修改.

有没有人找到一份指南,详细说明了迁移现有代码的变化和需要做些什么?我正在尝试决定何时最好对现有代码库进行此更改.

java amazon-web-services amazon-dynamodb

14
推荐指数
2
解决办法
4281
查看次数

.NET加密类的线程安全性?

我有一个高级目标,即创建一个静态实用程序类,它封装了我的.NET应用程序的加密.在里面,我想尽量减少不必要的对象创作.

我的问题是:在.NET Framework中实现对称加密的类的线程安全性什么? 具体而言System.Security.Cryptography.RijndaelManaged,ICryptoTransform它产生的类型.

例如,在我的类构造函数中,我可以简单地按照以下行执行某些操作吗?

static MyUtility()
{
    using (RijndaelManaged rm = new RijndaelManaged())
    {
        MyUtility.EncryptorTransform = rm.CreateEncryptor(MyUtility.MyKey, MyUtility.MyIV);
        MyUtility.DecryptorTransform = rm.CreateDecryptor(MyUtility.MyKey, MyUtility.MyIV);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这个类中存在Key和IV是安全的问题,这个示例块提出了许多其他问题:

  1. 我可以一遍又一遍地重复使用EncryptorTransform和DecryptorTransform吗?这些*.CanReuseTransform*.CanTransformMultipleBlocks属性意味着"是",但是我应该注意哪些警告?

  2. 因为RijndaelManaged实现IDisposable我倾向于把它放在一个using块中,特别是因为它可能与外部操作系统级别的lib相关联.有什么警告,因为我保持ICryptoTransform周围的物体?

  3. 可能是最重要的问题,在高度多线程的环境中,我会遇到ICryptoTransform在线程之间共享对象的问题吗?

  4. 如果对#3的回答是它不是线程安全的,那么当我使用这些ICryptoTransform对象时,我是否会因锁定而导致严重的性能下降?(取决于负载我想.)

  5. RijndaelManaged每次只是简单地实例化它会更高效吗?或者存储一个RijndaelManagednew RijndaelManaged().CreateEncryptor(...)每次生成?

我希望那里的某些人知道这些工作是如何工作的,或者是在类似实现方面遇到的问题.我发现很多这些性能和线程相关的问题通常都没有表现出来,直到有相当大的负载.

谢谢!

c# encryption cryptography thread-safety rijndaelmanaged

13
推荐指数
1
解决办法
3179
查看次数

如何从MSBuild定位多个版本的.NET Framework?

我正在改进一个开源项目的构建,该项目目前支持.NET Framework v2.0,v3.5和现在的v4.0.到目前为止,我已经限制自己使用v2.0以确保兼容性,但是对于VS2010,我感兴趣的是拥有真正的目标版本.

我正在寻找关于如何编辑MSBuild csproj/sln以便能够为每个目标干净地生成构建的一些指导.我愿意在csproj和批处理文件中有复杂性来控制构建.

我的目标是能够拥有一个命令行脚本,可以在不需要安装Visual Studio的情况下生成构建,但只能创建必要的.NET Framework.理想情况下,我希望尽量减少对其他软件的依赖.我注意到很多人使用NAnt(例如Ninject使用NAnt 构建了许多目标),但我不确定这是否是必要的,或者他们是否更熟悉它.

我很确定这可以做到,但我很难找到关于设置和最佳实践的权威指南.

奖励:设置完成后我的下一步将是更好地支持Mono Framework.对Mono做同样事情的任何帮助都将非常感激.

c# msbuild .net-4.0 .net-3.5

12
推荐指数
0
解决办法
6834
查看次数

再次访问IEEE-754双(64位浮点)与长(64位整数)

我正在重新审视一个问题(如何测试数字转换是否会改变值?),就我所关注的问题而言,我已经完全解决了.问题是检测特定数值何时会溢出JavaScript的IEEE-754数字类型.之前的问题是使用C#,标记的答案完美无缺.

现在我正在执行完全相同的任务,但这次是在Java中,它不起作用.AFAIK,Java使用IEEE-754作为其双数据类型.所以我应该能够来回摆动它以强制失去精确度,但它往返.对此感到困惑,我开始深入研究Java,现在我真的很困惑.

在C#和Java中,long的最小值和最大值都是相同的:

long MIN_VALUE = -9223372036854775808L;
long MAX_VALUE = 9223372036854775807L;
Run Code Online (Sandbox Code Playgroud)

AFAIK,这些值超出了IEEE-754中可表示的数字,因为为指数和符号保留了固定位.

// this fails in browsers that have stuck with the pure ECMAScript Number format
var str = Number(-9223372036854775808).toFixed();
if ("-9223372036854775808" !== str) { throw new Error("Overflow!"); }
Run Code Online (Sandbox Code Playgroud)

这将false在Java中返回(value = -9223372036854775808L):

boolean invalidIEEE754(long value) {
    try {
        return ((long)((double)value)) != value;
    } catch (Exception ex) {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

这将false在Java中返回(value = -9223372036854775808L):

boolean invalidIEEE754(long value) {
    // trying to get closer to …
Run Code Online (Sandbox Code Playgroud)

javascript java double ieee-754 long-integer

12
推荐指数
1
解决办法
6011
查看次数

用Java模拟鸭子打字

问题:我希望能够在Java中一般地访问Java ojbect上的任何属性/字段,类似于动态语言(想想Groovy,JavaScript)的方式.我不知道当时我正在编写这个管道代码它是什么类型的对象或属性/字段名称是什么.但是当我去使用它时,我会知道属性/字段名称.

我目前的解决方案:到目前为止,我已经编写了一个简单的包装类,用于java.beans.Introspector获取Bean/POJO的属性并将它们公开为Map<String, Object>.它很粗糙但适用于简单的情况.

我的问题是除了反射/转换为Map之外还有哪些方法可以解决这个问题?

在我走上这条道路之前,我想知道是否有人知道我如何能够从Rhino中蚕食一些东西,或者javax.script.*是否有一个经过深思熟虑的实施这个概念的东西.或者也许是一种我没有考虑过的完全不同的方法.

编辑:是的我熟悉反射(我相信它是Introspector在引擎盖下使用的东西).如果还有其他经过深思熟虑的解决方案,我只是很好奇.

编辑2:似乎最流行的答案涉及1)直接或通过辅助类反映,和/或2)映射到实现所需类成员的接口.关于利用Groovy的评论,我真的很感兴趣.由于Groovy具有真正的duck-typing并且它是一种JVM语言,有没有办法在Groovy中创建一个简单的帮助器并从Java调用它?这将非常酷,可能更灵活,性能更好.

答:我认为Mike的答案是最好的,因为它是一个最接近的完整概念.对于这种特殊情况,我可能不会采用这种方式,但它肯定是一种有用的方法.任何看过这个的人都应该确保阅读这里的对话,因为那里有很多有用的信息.

谢谢!

java groovy dynamic-languages duck-typing rhino

10
推荐指数
1
解决办法
861
查看次数