Thanks, Lars!

I started looking into this, and even set up a sample PAC script and proxy 
server to test it (pasted below for future reference). This is on Java 17, 
Windows 11, and a custom build of NetBeans Platform 13.0.

In my NetBeans Platform app, I added a dependency on a new JAR wrapper module, 
which in turn contains dependencies on org.graalvm.js:js and 
org.graalvm.js:js-scriptengine. This makes the NetBeans proxy server code work 
on Java 17, using GraalVM.

(It's a 22MB dependency to parse a 12-line configuration file, but it works! :-)

So my conclusion is that the NetBeans proxy server detection code in NetBeans 
13 works perfectly on Java 17, so long as GraalVM is included. On the IDE 
distribution, this seems to work as well (confirmed with 
-J-Dorg.netbeans.core.network.proxy.level=FINEST as suggested), with the 
org.netbeans.libs.graaljs module providing the same dependenices.

One question: I see that the org.netbeans.libs.graaljs module also includes 
dependencies on js-launcher, regex, graal-sdk, truffle-api, launcher-common, 
and icu4j. Do you think I need any of these if I just want my NetBeans Platform 
app to be able to parse PAC scripts? (I didn't see any errors from omitting 
them.)

Thank you very much to Lars, Jaroslav, and others who were involved with 
keeping this code up to date and working!

-- Eirik
=================== Example PAC File =========================
function FindProxyForURL(url, host) {
    if (isInNet(host, '127.0.0.1', '255.255.255.255')) {
      return "DIRECT";
    }

    if (dnsDomainIs(host, "slashdot.org")) {
      return "SOCKS localhost:1081"; // Will fail.
    } else {
      // Do some arithmetic to confirm that a JavaScript interpreter is really 
running.
      return "SOCKS localhost:" + (1000 + 80);
    }
}
==== Example SSH Command to Set Up A Proxy Server ==============
ssh -ND 1080 some_server_you_can_ssh_into.com
==== Dependencies in pom.xml =================== ==============
  <dependencies>
    <dependency>
      <groupId>org.graalvm.js</groupId>
      <artifactId>js</artifactId>
      <version>22.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.graalvm.js</groupId>
      <artifactId>js-scriptengine</artifactId>
      <version>22.1.0</version>
    </dependency>
  </dependencies>
===========================================================


-----Original Message-----
From: Lars Bruun-Hansen <lbruunhan...@gmail.com> 
Sent: Saturday, May 14, 2022 3:38 AM
To: dev@netbeans.apache.org
Subject: Re: State of proxy server auto-detection in NetBeans? (PAC scripts, 
Nashorn/Rhino/GraalVM etc.)

Hi Eirik
From memory: It was only like 6 months after my Rhino-->Nashorn update/rewrite 
was integrated into the NB code base that Oracle announced that Nashorn would 
eventually be removed from the JDK.
Jarouslav Tulach kindly took upon him to make sure NB would use a more robust 
approach where Graal's Javascript engine is used if available and Nashorn is 
the fallback.

Have a look:
   
https://github.com/apache/netbeans/blob/master/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java#L348

With a log level of FINE you should be able to see exactly which Javascript 
engine is in use in your own case:
  
https://github.com/apache/netbeans/blob/master/platform/core.network/src/org/netbeans/core/network/proxy/pac/impl/NbPacScriptEvaluator.java#L284

So you can start your IDE with something like this:
-J-Dorg.netbeans.core.network.proxy.level=FINEST


to see what is in effect. However, you'll not see anything related to PAC 
evaluation unless NetBeans actually discovers a PAC file in the network.

Kind regards

Lars



On Mon, May 9, 2022 at 10:42 PM Eirik Bakke <eba...@ultorg.com> wrote:
>
> Hi, NetBeans friends.
>
>
>
> Back in NetBeans 9.0, Lars Bruun-Hansen integrated a brand new proxy 
> server auto-detection system [1], based on the earlier netbeansproxy2 
> project(?)
>
>
>
> Does this still work in Java 17?
>
> In NetBeans Platform applications, are there dependencies that need to be 
> bundled beyond OpenJDK, in order for this to work?
>
>
>
> I have heard about Nashorn, Rhino, and GraalVM, one of which seem to have 
> been required to execute proxy server PAC configuration scripts (which are 
> apparently pieces of JavaScript). Which of these three are we using these 
> days? Is the JavaScript engine a part of OpenJDK, or must it be bundled 
> externally?
>
>
>
> -- Eirik
>
> [1] https://issues.apache.org/jira/browse/NETBEANS-96
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@netbeans.apache.org
For additional commands, e-mail: dev-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists



Reply via email to