我需要将我的JavaEE应用程序作为目录部署在Glassfish上,而不是打包的WAR文件.是否可以使用Maven Glassfish插件将目录部署到Glassfish?
使用管理控制台,它是可能的.但我希望能够在命令行上执行此操作.
这个问题是如此愚蠢...无论如何,我只是找不到正确的信息,因为我看到的每个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中编写它?
在我的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)
我怎么能意识到这一点?
我想将 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
我正在开发一个经常启动的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类.
我的基于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) 我需要一种可靠的方法来检查通过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时?
我有一个格式不太好的 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式的、干净的方法来做到这一点?
我想用Asciidoc为我的CLI脚本编写联机帮助页并将其转换为
a2x --doctype manpage --format manpage MYMANPAGE.ASCIIDOC
Run Code Online (Sandbox Code Playgroud)
我找不到任何可以使用此命令成功转换为联机帮助页的Asciidoc示例.你能指点我一个例子还是提供一个例子?
我有一张桌子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)?