标签: jython

Java脚本安全性(JRuby,Jython,Groovy,BeanShell等)

我正在寻找运行一些未经验证的脚本(用一种尚未确定的语言编写,但需要基于Java,因此JRuby,Groovy,Jython,BeanShell等都是候选者).我希望这些脚本能够做一些事情并限制做其他事情.

通常,我只是使用Java的SecurityManager并完成它.这非常简单,让我限制文件和网络访问,关闭JVM的能力等等.这对我想要阻止的高级别东西很有效.

但是我想要允许一些东西,但只能通过我提供的自定义API /库.例如,我不想允许直接网络访问打开到yahoo.com的URLConnection,但如果使用MyURLConnection完成,我没关系.那就是 - 我想要允许的一组方法/类,然后我想要的其他一切不受限制.

我不相信这种类型的安全性可以使用标准的Java安全模型来完成,但也许它可以.我对脚本语言本身的性能或灵活性没有特定要求(脚本将通过基本循环/分支对我的API进行简单的过程调用).所以即使是一个"大"的开销来检查每次反射调用的安全检查也没问题.

建议?

java security groovy jython jruby

11
推荐指数
1
解决办法
3149
查看次数

在jython中导入python模块

我在jython下导入scapy时遇到了一些问题.我一直在做java,但python只用了一两天.

重现问题的简单案例是:

$jython

>>> import sys
>>> sys.path
['', '/usr/share/jython/Lib', '/usr/lib/site-python', '__classpath__']
>>> from scapy.all import *
Traceback (innermost last):
File "<console>", line 1, in ?
ImportError: no module named scapy
Run Code Online (Sandbox Code Playgroud)

如果我完成这些完全相同的步骤python,一切正常.我怎么告诉jython使用scapy?如果它有帮助,我正在运行ubuntu 10.04并安装了jython和scapy viaapt-get install

python import jython scapy importerror

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

Jython + Django还没准备好投入生产?

最近我在Jython平台上玩Django,并希望在"生产"中看到它的性能.我测试的网站只是一个简单的return HttpResponse("Time %.2f" % time.time())视图,因此不涉及数据库.我尝试了以下两种组合(使用ab -c15 -n500 -k <url>VirtualBox上的Ubuntu Server 10.10中的所有内容完成测量):

  • J2EE应用服务器(Tomcat/Glassfish),部署了WAR文件

    我得到的结果就像

    Requests per second:    143.50 [#/sec] (mean)
    [...]
    Percentage of the requests served within a certain time (ms)
      50%     16
      66%     16
      75%     16
      80%     16
      90%     31
      95%     31
      98%    641
      99%   3219
     100%   3219 (longest request)
    
    Run Code Online (Sandbox Code Playgroud)

    显然,服务器偶尔会挂起几秒钟,这是不可接受的.我认为它与重新加载Jython有关,因为启动jythonshell也需要大约3秒钟.

  • AJP服务使用修补的flup包(+ Apache作为前端)

    注意:flup是使用的包manage.py runfcgi,我不得不修补它因为flup的线程/分叉支持似乎不适用于Jython( - > AJP是唯一的工作方法).

    这里的结果几乎相同,但有时最后100个请求根本没有得到解答(但服务器进程仍然存在).

我在SO(而不是serverfault)上问这个,因为它特别是Django/Jython. 有没有人有在Jython上部署Django网站的经验?可能有另一种(更快)的方式来为网站服务吗?或者在Java平台上使用Django还为时尚早?

deployment django performance jython java-ee

11
推荐指数
1
解决办法
2061
查看次数

我可以检测我的代码是在cPython还是Jython上运行?

我正在研究一个稍后将部署在servlet容器中的小型django项目.但是如果我使用cPython而不是Jython,开发会快得多.所以我想要做的是测试我的代码是否在我的settiings.py中的cPython或Jython上运行,所以我可以告诉它使用适当的db驱动程序(postgresql_psycopg2或doj.backends.zxjdbc.postgresql).有一个简单的方法吗?

python django jython

10
推荐指数
4
解决办法
4778
查看次数

在Python中拦截切片操作

我想模仿一个普通的python列表,除非通过切片添加或删除元素,我想"保存"列表.这可能吗?这是我的尝试,但它永远不会打印"保存".

class InterceptedList(list):

    def addSave(func):
        def newfunc(self, *args):
            func(self, *args)
            print 'saving'
        return newfunc

    __setslice__ = addSave(list.__setslice__)
    __delslice__ = addSave(list.__delslice__)

>>> l = InterceptedList()
>>> l.extend([1,2,3,4])
>>> l
[1, 2, 3, 4]
>>> l[3:] = [5] # note: 'saving' is not printed
>>> l
[1, 2, 3, 5]
Run Code Online (Sandbox Code Playgroud)

但这对于其他的方法,如工作appendextend,只是不适合切片操作.

编辑:真正的问题是我使用的是Jython而不是Python而忘了它.对这个问题的评论是正确的.这段代码在Python(2.6)中运行良好.但是,代码和答案都适用于Jython.

python methods jython slice intercept

10
推荐指数
3
解决办法
2183
查看次数

使用java运行jython字节码

看起来我错过了一些东西.

当使用Jython在Java中运行我的Python代码时,会生成Java字节码文件(test.py - > test@py.class).

我可以直接使用java运行这些类吗?

换句话说,我想这样做:

$ java test@py [additional cp args]
Run Code Online (Sandbox Code Playgroud)

工作.

目的:编写Python代码而不必泄露源代码.

python java bytecode jython

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

jython syntaxerror?

嗨伙计们,当我在jython中运行我的程序时,我在以下行得到以下语法错误:

except Exception as detail:
Run Code Online (Sandbox Code Playgroud)

SyntaxError:不匹配的输入'as'期待COLON

但是在python上可以吗?怎么了?我正在尝试在我的python程序中使用stanford pos tagger api(java).还有其他方法吗?

python jython

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

Python认为我传递的争论比我多?

试图在Python中设置一些基本的套接字代码(好吧,Jython,但我不认为这与此相关).

import socket
class Foo(object):
    def __init__(self):
        #some other init code here

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect("localhost", 2057)
        s.send("Testing 1,2,3...")
        data = s.recv()
        s.close()
        print data
Run Code Online (Sandbox Code Playgroud)

它告诉我:

    s.connect("localhost", 2057)
  File "<string>", line 1, in connect
TypeError: connect() takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

我觉得一些非常简单的感觉就是盯着我看,但我不知道我做错了什么.

python sockets jython

10
推荐指数
2
解决办法
3783
查看次数

Jython中的SAX IncrementalParser

Python标准库提供了xml.sax.xmlreader.IncrementalParser具有feed()方法的接口.Jython还提供xml.sax了使用Java SAX解析器实现的软件包,但它似乎没有提供IncrementalParser.

没有办法在Jython中逐步解析XML块?乍一看,我认为可以使用coroutine来实现greenlet,但我立刻意识到它不能在Jython中使用.

python xml sax jython

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

解析python中有空格的命令行参数

我正在调用ant的脚本.我从调用者那里得到它作为单个字符串,但python奇怪地把它当作两个单独的字符串.我有脚本在Windows中用它的路径读取文件名.文件夹结构可以在其间或可以不具有空格

这是一个例子

test.py D:/test/File Name

我知道这可以使用optparse来完成.有没有什么方法可以将param作为单个参数读取,就像我想在sys.argv [index]中获取它一样(作为单个字符串).我已经厌倦了'和'前缀,但没有成功.

python jython wlst

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