小编Ing*_*her的帖子

Maven Glassfish插件:将应用程序部署为展开的目录/文件夹

我需要将我的JavaEE应用程序作为目录部署在Glassfish上,而不是打包的WAR文件.是否可以使用Maven Glassfish插件将目录部署到Glassfish?

使用管理控制台,它是可能的.但我希望能够在命令行上执行此操作.

maven-2 glassfish glassfish-3 maven-glassfish-plugin

4
推荐指数
1
解决办法
3390
查看次数

如何在Scala中定义无参数构造函数

这个问题是如此愚蠢...无论如何,我只是找不到正确的信息,因为我看到的每个Scala构造函数示例类都至少使用一个参数.

我希望将这个类从Java翻译成Scala:

public class SubscriptionConverter extends Converter {
  public SubscriptionConverter() {
    Context ctx = new InitialContext();
    UserEJB userEJB = (UserEJB) ctx.lookup("java:global/teachernews/UserEJB");
  }
  (...)
}
Run Code Online (Sandbox Code Playgroud)

所以我只有一个无参数构造函数.我在Scala中乱搞了这个(),但是我无法得到类似上面那个工作的例子.我如何在Scala中编写它?

scala scala-2.8

4
推荐指数
1
解决办法
1351
查看次数

Ant exec任务:如何将一个长参数分成多行

在我的Ant skript中,我正在执行一个程序,传递一些参数,其中一个是一个很长的参数:

<exec executable="${conf.GLASSFISH}/bin/asadmin" failonerror="true" vmlauncher="false">
  <arg line="create-auth-realm" />
  <arg line="--classname com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm" />
  <arg line="--property jaas-context=${conf.auth.jaas-context}:datasource-jndi=${conf.auth.datasource-jndi}:user-table=${conf.auth.usertable}:user-name-column=${conf.auth.usernamecolumn}:password-column=${conf.auth.passwordcolumn}:group-table=${conf.auth.grouptable}:group-name-column=${conf.auth.groupnamecolumn}:assign-groups=${conf.auth.assigngroups}:digest-algorithm=${conf.auth.digest}" />
  <arg line="jdbcRealm" />
</exec>
Run Code Online (Sandbox Code Playgroud)

我如何将第三个参数分成多行,因此ant-skript更具可读性(更低的线宽)?像这样的东西(\只是一个占位符来展示我需要的东西):

<exec executable="command">
  <arg line="--property PROP1:\\"/>
  <arg line="PROP2:\\"/>
  <arg line="PROP3\\"/>
</exec>
Run Code Online (Sandbox Code Playgroud)

所以当Ant执行它时,它应该导致以下命令:

command --property PROP1:PROP2:PROP3
Run Code Online (Sandbox Code Playgroud)

我怎么能意识到这一点?

ant

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

Argparse:如何区分解析器和子解析器的参数

我想将 python-argparse 与参数和位置参数一起使用。假设我在命令行上有我的脚本(这只是一个简单而愚蠢的例子),这是我目前的代码:

#!/usr/bin/env python
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true')
subparsers = parser.add_subparsers(help='command', dest='command')
cmd1_parser = subparsers.add_parser('command1')
cmd1_parser.add_argument('--verbose', action='store_true')

args = parser.parse_args()

print args
Run Code Online (Sandbox Code Playgroud)

现在我这样称呼这个脚本:

~ $ myscript --verbose command1 --verbose
Namespace(command='command1', verbose=True)

~ $ myscript command1 --verbose
Namespace(command='command1', verbose=True)

~ $ myscript --verbose command1
Namespace(command='command1', verbose=True)
Run Code Online (Sandbox Code Playgroud)

现在你可以看到我总是得到相同的命名空间对象,并且无法区分详细命令是常规参数还是子解析器参数。但我需要分别处理这些参数。什么是一种简单的方法(以最少的代码工作)来做到这一点?

编辑

我在 Python stdlib 问题跟踪器中提交了一个问题:http : //bugs.python.org/issue15327

python argparse

4
推荐指数
1
解决办法
1871
查看次数

如何使用Nailgun Server启动Groovy脚本(或Java类)

我正在开发一个经常启动的Groovy shell脚本(执行相当小的任务),因此我需要一个快速的JVM启动时间.为了达到这个目的,我试图用Nailgun推出它.

我已经安装了Nailgun作为Ubuntu包.然后,我固定的说法错误的链接/usr/bin/ng-server/usr/bin/ng.我正在启动Nailgun-Server,如下所示:

java -cp /usr/share/java/nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer
Run Code Online (Sandbox Code Playgroud)

我有一个名为hello.groovy的简单虚拟Groovy脚本,只是为了测试nailgun-server:

#!/usr/bin/env groovy
def sayHello() {
  println("Hello Groovy!");
}

sayHello();
Run Code Online (Sandbox Code Playgroud)

我用groovyc将文件编译为hello.class.

现在我想在Nailgun服务器中启动该脚本.我这样做的天真方法是:

ng hello
ng hello.sayHello
Run Code Online (Sandbox Code Playgroud)

但我得到的只是ClassNotFoundExceptions:

java.lang.ClassNotFoundException: hello
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at com.martiansoftware.nailgun.NGSession.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

那么,使用Nailgun服务器启动Groovy脚本的正确方法是什么?我也很欣赏一些关于如何使用Nailgun的好网站/教程,很难获得如何使用它的任何信息......

编辑:

我还要感谢使用带有纯Java类的nailgun的完整示例(包括如何使用ng调用特定类),因为我也无法使用任何Java类.

java groovy jvm nailgun

3
推荐指数
1
解决办法
1750
查看次数

Twisted:禁用Twisted-framework类的日志记录

我的基于Twisted的客户端在循环中发送UDP数据包.因此我使用的是DatagramProtocol类.这是来源:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from twisted.application.service import Service
from twisted.internet import reactor
from twisted.internet.task import LoopingCall
from twisted.internet.protocol import DatagramProtocol
from twisted.python import log
import logging

class HeartbeatClient(Service):
    def __init__(self, host, port, data, beat_period):
        self.ip = host
        self.port = int(port)
        self.data = data
        self.beat = int(beat_period)

    def startService(self):
        self._call = LoopingCall(self._heartbeat)
        self._call.start(self.beat)

    def stopService(self):
        self._call.stop()

    def _heartbeat(self):
        protocol = DatagramProtocol()
        protocol.noisy = False
        port = reactor.listenUDP(0, protocol)
        port.write(self.data, (self.ip, self.port))
        port.stopListening()
Run Code Online (Sandbox Code Playgroud)

现在当我用twistd运行这个客户端时,我永久地从Twisted类中获取日志消息,即从类DatagramProtocol获取:

2011-09-11 18:39:25+0200 [-] (Port 55681 …
Run Code Online (Sandbox Code Playgroud)

python logging twisted twistd

3
推荐指数
1
解决办法
1738
查看次数

检查是否已成功启动使用twistd启动的Twisted Server

我需要一种可靠的方法来检查通过twistd(和TAC文件)启动的基于Twisted的服务器是否已成功启动.它可能会失败,因为某些网络选项设置错误.由于我无法访问twistd日志(因为它记录到/ dev/null,因为我不需要log-clutter twistd产生),我需要找出服务器是否在启动脚本中成功启动了扭曲的电话.

launch-script是一个像这样的Bash脚本:

#!/usr/bin/bash
twistd \
  --pidfile "myservice.pid" \
  --logfile "/dev/null" \
  --python \
  myservice.tac
Run Code Online (Sandbox Code Playgroud)

我在网上找到的只是使用ps或类似东西的一些黑客.但我不喜欢这样的方法,因为我觉得它不可靠.

所以我在考虑是否有办法访问Twisted的内部,并获得所有当前正在运行的Twisted应用程序?这样我就可以在当前运行的应用程序中查询我的Twisted应用程序的名称(正如我在TAC文件中命名的那样)来启动.

我也在考虑不使用扭曲的可执行文件,而是实现基于Python的启动脚本,其中包含了扭曲的内容,就像这个问题的答案所提供的那样,但我不知道这是否有助于我获得状态服务器运行.

所以我的问题就是:是否有一种可靠的非丑陋的方式来判断Twisted Server启动时是否已成功启动了twistd,当禁用了twistd-logging时?

python twisted twistd

3
推荐指数
1
解决办法
629
查看次数

Python:XML 内所有标记名称中的字符串替换(将连字符替换为下划线)

我有一个格式不太好的 XML,标签名称内有连字符,我想用下划线替换它(以便能够与 lxml.objectify 一起使用)。我想替换所有标签名称,包括嵌套的子标签。

示例 XML:

<job>
  <server>
    <cpu-set>
    </cpu-set>
  </server>
  <ip-routings>
  </ip-routings>
</job>
Run Code Online (Sandbox Code Playgroud)

我想以一种干净的方式(不使用正则表达式,但使用像 lxml 这样的 XML 库)将此 XML 转换为以下形式:

<job>
  <server>
    <cpu_set>
    </cpu_set>
  </server>
  <ip_routings>
  </ip_routings>
</job>
Run Code Online (Sandbox Code Playgroud)

什么是Python式的、干净的方法来做到这一点?

python lxml

3
推荐指数
1
解决办法
2636
查看次数

有效的Asciidoc转换为手册页(带有a2x)

我想用Asciidoc为我的CLI脚本编写联机帮助页并将其转换为

a2x --doctype manpage --format manpage MYMANPAGE.ASCIIDOC
Run Code Online (Sandbox Code Playgroud)

我找不到任何可以使用此命令成功转换为联机帮助页的Asciidoc示例.你能指点我一个例子还是提供一个例子?

manpage asciidoc

3
推荐指数
1
解决办法
1421
查看次数

Postgres:获取表中特定范围内的下一个免费ID(不使用序列)

我有一张桌子t_user

CREATE TABLE t_user
(
  c_id bigint NOT NULL,
  c_lastname character varying(255)
)
Run Code Online (Sandbox Code Playgroud)

该表没有使用任何序列来生成ID,而是在Postgres之外计算这些ID(不要问,也不在乎这可能导致的问题)。现在,我需要知道并填充从0到1000范围内的一些“漏洞”。

是否可以制定一个Postgres查询,使我获得该表中所有未使用的ID(范围为0到1000)?

postgresql

3
推荐指数
1
解决办法
922
查看次数