Hi Eugen, 

Many thanks for your response, and apologies for the late reply. I followed the 
JIRA conversation and the various links, and ended up here [1]  which seems to 
be the exact problem I am facing. The thing is that this seems to have resolved 
on Java side many years ago. I believe I was using Java 15 (through leiningen) 
when I was trying all of this last week, but I am not actually sure. I’ll 
investigate a bit more next week…

Thanks again :)
Dimitris


[1]: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8155607 


> On 19 Jan 2021, at 17:25, Eugen Stan <stan.ieu...@gmail.com> wrote:
> 
> Hello Dimitris,
> 
> I think I have encountered the same issue and I found a solution for it while 
> working on OFBiz.
> 
> See this if it helps: https://issues.apache.org/jira/browse/OFBIZ-12118
> 
> And the solution:
> 
> URLConnection connection = url.openConnection();
> // https://issues.apache.org/jira/browse/OFBIZ-12118
> connection.setUseCaches(false);
> try (InputStream is = connection.getInputStream();){
>    return readXmlDocument(is, validate, url.toString());
> }
> 
> 
> The idea is to disable caching from the url connection (the JarURLConection).
> 
> I hope it helps.
> 
> Regards,
> Eugen
> 
> On 18.01.2021 11:22, Dimitrios Piliouras wrote:
>> Hi folks,
>> I'm trying to integrate log4j2 (and its `MapMessage`) with tools.logging. 
>> Everything was going great until the moment I had to depend on this little 
>> library, from another project. Everything would work on the REPL, but `lein 
>> check` was failing with the most bizarre IOException (Stream closed) during 
>> compilation! I reported/asked about this to `duct-core` initially [1] (as it 
>> was a duct-based project), but it turns out that this doesn't really relate 
>> to duct. James (@weavejester) was kind enough to  attempt to explain this, 
>> and he basically concluded that (quoting straight from the ticket):
>> 1. The Clojure classloader opens a stream to read
>>    |com.elcom.tools.logging.structured| from the jar.
>> 2. The |clojure.tools.logging| namespace is then required and loaded.
>> 3. Log4j is triggered from |clojure.tools.logging|, which then tries to
>>    read from the elcom-tools jar again, probably to load in your custom
>>    logging class or properties file.
>> 4. This second read appears to close the first stream to
>>    |com.elcom.tools.logging.structured|, causing an IO error from the
>>    still-open reader.
>> Note that this only occurs when the classloader is trying to load from a 
>> jar. The moment the files are cached in the |target| directory, everything 
>> works fine.
>> Reproducing this requires that you download the two zips from the link 
>> below, install `elcom-tools` locally, and then doing `lein check` on 
>> `elcom-auth`.
>> I do have a workaround at this point, but at the same time, I'd love to 
>> understand what exactly is happening here. Many thanks in advance for any 
>> insights...
>> Kind regards,
>> Dimitris

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/A4B001FE-E0A5-4621-AEB3-27222DA5EC06%40gmail.com.

Reply via email to