From: Pierre T. <pie...@gm...> - 2011-10-22 20:37:12
|
2011/10/20 Quanah Gibson-Mount <qu...@zi...> > --On Wednesday, September 14, 2011 10:46 AM -0700 Quanah Gibson-Mount > <qu...@zi...> wrote: > > > Has anyone gotten jython to work with unix sockets, as python does? It > > doesn't seem to support this basic feature. :/ > > > > I would note there exist java-based packages (such as Junixsocket) to do > > this, I was expecting jython would support it for python compatibility. > > Unfortunately the socket bits shipped in the Jython jar don't seem to > > allow for this. > > > Anyone? > Why can't you use Junixsocket? Python (CPython) is extensible using extension or c-extension. To do the same thing with Java (Jython), you have to use Java Native Interface (JNI). Then you can use these Java API from Jython just like any Java API. Pierre Thibault Python Developer/Développeur Python Montréal, QC *pie...@gm...* |
From: Alan K. <jyt...@xh...> - 2011-10-23 14:08:46
|
[Quanah] > Has anyone gotten jython to work with unix sockets, as python does? It > doesn't seem to support this basic feature. :/ I have just written a message why it is very unlikely that unix domain sockets wil be supported on java, at least until the JVM supports them. However, there may be a simpler solution for your requirements. What do you want to do with unix domain sockets? It may be possible to implement a solution without modifying the jython standard library. Alan. |
From: Quanah Gibson-M. <qu...@zi...> - 2011-10-24 18:32:35
|
--On Sunday, October 23, 2011 3:08 PM +0100 Alan Kennedy <jyt...@xh...> wrote: > [Quanah] >> Has anyone gotten jython to work with unix sockets, as python does? It >> doesn't seem to support this basic feature. :/ > > I have just written a message why it is very unlikely that unix domain > sockets wil be supported on java, at least until the JVM supports > them. > > However, there may be a simpler solution for your requirements. > > What do you want to do with unix domain sockets? It may be possible to > implement a solution without modifying the jython standard library. I want to talk to LDAP over ldapi (unix domain sockets). I think your reply on how to do this with jython and junixsockets is quite sufficient. Thanks! --Quanah -- Quanah Gibson-Mount Sr. Member of Technical Staff Zimbra, Inc A Division of VMware, Inc. -------------------- Zimbra :: the leader in open source messaging and collaboration |
From: Alan K. <jyt...@xh...> - 2011-10-24 18:49:17
|
[Quanah] > I want to talk to LDAP over ldapi (unix domain sockets). I think your reply > on how to do this with jython and junixsockets is quite sufficient. Thanks! Cool. If you get that going, please consider writing a blog post or an email to the list to describe your solution, so that all can benefit from the experience. Let us know if you have any problems. Alan. |
From: Quanah Gibson-M. <qu...@zi...> - 2012-04-04 02:24:01
|
--On Monday, October 24, 2011 11:32 AM -0700 Quanah Gibson-Mount <qu...@zi...> wrote: > --On Sunday, October 23, 2011 3:08 PM +0100 Alan Kennedy > <jyt...@xh...> wrote: > >> [Quanah] >>> Has anyone gotten jython to work with unix sockets, as python does? It >>> doesn't seem to support this basic feature. :/ >> >> I have just written a message why it is very unlikely that unix domain >> sockets wil be supported on java, at least until the JVM supports >> them. >> >> However, there may be a simpler solution for your requirements. >> >> What do you want to do with unix domain sockets? It may be possible to >> implement a solution without modifying the jython standard library. > > I want to talk to LDAP over ldapi (unix domain sockets). I think your > reply on how to do this with jython and junixsockets is quite sufficient. > Thanks! This has gotten simpler since the UnboundID SDK now supports using LDAPI with junixsocket, so I can just use the UnboundID SDK for this part. However, I realized the other bit I wanted to do with Unix sockets was talk to syslog. I.e., I do not want to use UDP or TCP for talking to syslog from Jython. Specifically, I want to be able to use logging.handlers.SysLogHandler with a unix socket. That was why I originally requested Unix socket support in jython's socket library. I don't see any way to be able to use that class without that support built into jython, and the inability to talk to Syslog over unix sockets is a significant security issue. --Quanah -- Quanah Gibson-Mount Sr. Member of Technical Staff Zimbra, Inc A Division of VMware, Inc. -------------------- Zimbra :: the leader in open source messaging and collaboration |
From: Quanah Gibson-M. <qu...@zi...> - 2012-04-05 18:03:57
|
--On Tuesday, April 03, 2012 7:23 PM -0700 Quanah Gibson-Mount <qu...@zi...> wrote: > However, I realized the other bit I wanted to do with Unix sockets was > talk to syslog. I.e., I do not want to use UDP or TCP for talking to > syslog from Jython. I see I can easily do this directly with Java via syslog4j, so I'm covered. ;) --Quanah -- Quanah Gibson-Mount Sr. Member of Technical Staff Zimbra, Inc A Division of VMware, Inc. -------------------- Zimbra :: the leader in open source messaging and collaboration |
From: Alan K. <jyt...@xh...> - 2012-04-05 20:14:03
|
[Quanah] > I see I can easily do this directly with Java via syslog4j, so I'm covered. > ;) Cool. If you could send a couple of code or configuration snippets to the list, that would be great. That would help any others who face the same problem in the future. Alan. |
From: Quanah Gibson-M. <qu...@zi...> - 2012-04-05 21:34:13
|
--On Thursday, April 05, 2012 9:13 PM +0100 Alan Kennedy <jyt...@xh...> wrote: > [Quanah] >> I see I can easily do this directly with Java via syslog4j, so I'm >> covered. ;) > > Cool. > > If you could send a couple of code or configuration snippets to the > list, that would be great. > > That would help any others who face the same problem in the future. from org.productivity.java.syslog4j import Syslog from org.productivity.java.syslog4j import SyslogIF from org.productivity.java.syslog4j import SyslogConstants from org.productivity.java.syslog4j.impl.unix import UnixSyslog from org.productivity.java.syslog4j.impl.unix.socket import UnixSocketSyslogConfig zmconfigdSyslogInstance = UnixSocketSyslogConfig(SyslogConstants.FACILITY_LOCAL0, "/dev/log") zmsyslog = Syslog.createInstance("zmSyslog",zmconfigdSyslogInstance) zmsyslog.info("info level test message") Will log the message via facility LOCAL0 at info level. ;) --Quanah -- Quanah Gibson-Mount Sr. Member of Technical Staff Zimbra, Inc A Division of VMware, Inc. -------------------- Zimbra :: the leader in open source messaging and collaboration |
From: Quanah Gibson-M. <qu...@zi...> - 2012-04-06 18:31:26
|
--On Thursday, April 05, 2012 2:33 PM -0700 Quanah Gibson-Mount <qu...@zi...> wrote: > --On Thursday, April 05, 2012 9:13 PM +0100 Alan Kennedy > <jyt...@xh...> wrote: > >> [Quanah] >>> I see I can easily do this directly with Java via syslog4j, so I'm >>> covered. ;) >> >> Cool. >> >> If you could send a couple of code or configuration snippets to the >> list, that would be great. >> >> That would help any others who face the same problem in the future. > > from org.productivity.java.syslog4j import Syslog > from org.productivity.java.syslog4j import SyslogIF > from org.productivity.java.syslog4j import SyslogConstants > from org.productivity.java.syslog4j.impl.unix import UnixSyslog > from org.productivity.java.syslog4j.impl.unix.socket import > UnixSocketSyslogConfig > > zmconfigdSyslogInstance = > UnixSocketSyslogConfig(SyslogConstants.FACILITY_LOCAL0, "/dev/log") > zmsyslog = Syslog.createInstance("zmSyslog",zmconfigdSyslogInstance) > > zmsyslog.info("info level test message") > > Will log the message via facility LOCAL0 at info level. ;) One final note: By default, syslog4j uses the hostname as the local process name it reports, which isn't ideal. You can easily change the name it logs to syslog with the setLocalName function. For example, my process is called zmconfigd. To make its messages look like other syslog messages, I did: zmsyslog.getConfig().setLocalName("zmconfigd[%d]:" % os.getpid()) --Quanah -- Quanah Gibson-Mount Sr. Member of Technical Staff Zimbra, Inc A Division of VMware, Inc. -------------------- Zimbra :: the leader in open source messaging and collaboration |
From: Alan K. <jyt...@xh...> - 2011-10-23 14:07:58
|
[Quanah] > Has anyone gotten jython to work with unix sockets, as python does? It > doesn't seem to support this basic feature. :/ Java does not support unix-domain sockets because it is not a portable concept, e.g. it can't be supported on Windows, which doesn't have unix domain sokets. (Although it does have a related concept, named pipes, which uses a Windows-specific API, and different semantics). [Quanah] > I would note there exist java-based packages (such as Junixsocket) to do > this, I was expecting jython would support it for python compatibility. We do our best to make jython compatible with cpython. But there are some cases where it is not possible, because the support simply is not there on the JVM. Another area where this is true is TIPC. http://tipc.sourceforge.net/ http://docs.python.org/library/socket.html [Quanah] > Unfortunately the socket bits shipped in the Jython jar don't seem to > allow for this. In order to use junixsocket for jython sockets, junixsocket would have to be rewritten (both the C and java components of it) to support asynchronous/non-blocking IO. Unlike the rest of the jython socket implementation, junixsocket does not support asynchronous IO, meaning that it is not possible to use event driven programming with it. http://code.google.com/p/junixsocket/wiki/ToDo The ease of event driven programming in python is one of the fundamental reasons why people choose the language as a platform for writing high-performance event driven servers such as twisted or tornado. So, while it is possible to implement support for something like junixsocket in the jython socket module, it would only work on platforms where junixsocket works. Also it would quickly lead to complaints about it not supporting asynchronous IO, which would require a massive effort to fix. The existing jython IO layer is heavily dependent on java.nio APIs (which is part of the reason why jython IO is so performant). http://hg.python.org/jython/file/704b07c1d5f5/src/org/python/core/io [Pierre] > Why can't you use Junixsocket? > > Python (CPython) is extensible using extension or c-extension. To do the same > thing with Java (Jython), you have to use Java Native Interface (JNI). Then you > can use these Java API from Jython just like any Java API. Directly using junixsocket from jython would be even easier than that, since the JNI bits are already implemented. All that would be required is to A: Follow the junixsocket instructions on importing the JNI component, and B: import the library and coding against it's java API. http://code.google.com/p/junixsocket/wiki/GettingStarted Alan. |