The Shibboleth IdP V4 software has reached its End of Life and is no longer supported. This documentation is available for historical purposes only. See the IDP5 wiki space for current documentation on the supported version.
How to Run the Testbed in Eclipse with Jetty 9.4
- 1 How To Run the Testbed in Eclipse with Jetty 9.4
- 1.1 1) Install Jetty (download and unpack jetty-distribution or jetty-home)
- 1.2 2) Clone the java-idp-testbed, java-identity-provider, and java-idp-jetty-base source code repositories as peers in the same directory :
- 1.3 2b) Optionally, clone additional source code repositories :
- 1.4 3) Import projects into Eclipse :Â File > Import > Maven > Existing Maven ProjectsÂ
- 1.5 4) Checkout the 9.4-testbed-eclipse branch of java-idp-jetty-base
- 1.6 5) Assemble third party dependencies by building the IdP WAR and removing IdP JARs :
- 1.7 6) Download logging and testbed dependencies and add to the Jetty server classpath :
- 1.8 7) Run the testbed in Eclipse as a Java Application :
- 1.9 8) Go to the testbed webapp :Â
- 2 Issues
- 2.1 Logging
- 3 Why is Jetty 9.4 different than 9.3 ?
- 4 Example Eclipse Launcher
Works with Eclipse 2019-06 or later
How To Run the Testbed in Eclipse with Jetty 9.4
1)Â Install Jetty (download and unpack jetty-distribution
 or jetty-home
)
The version of Jetty should match the jetty.version
property in the testbed POM (java-idp-testbed/pom.xml
)
The Jetty directory should be set as the jetty.home
 system property in the Eclipse Launcher when running the testbed's Main.java, see Program Arguments below.
2) Clone the java-idp-testbed
, java-identity-provider
, and java-idp-jetty-base
 source code repositories as peers in the same directory :
git clone git@git.shibboleth.net:java-idp-testbed
git clone git@git.shibboleth.net:java-idp-jetty-base
git clone git@git.shibboleth.net:java-identity-provider
2b) Optionally, clone additional source code repositories :
git clone git@git.shibboleth.net:java-support
git clone git@git.shibboleth.net:spring-extensions
git clone git@git.shibboleth.net:java-opensaml
3) Import projects into Eclipse :Â File > Import > Maven > Existing Maven Projects
Â
4) Checkout the 9.4-testbed-eclipse
 branch of java-idp-jetty-base
5) Assemble third party dependencies by building the IdP WAR and removing IdP JARs :
cd java-identity-provider/idp-war
mvn clean package -DskipTests
rm target/idp-war-*/WEB-INF/lib/idp-*.jar
Optionally remove additional JARs :
6) Download logging and testbed dependencies and add to the Jetty server classpath :
7) Run the testbed in Eclipse as a Java Application :
In the idp-testbed
project, right-click on idp-testbed-jetty-9.4.launch > Run As > Java Application
Â
8) Go to the testbed webapp :Â
https://localhost:8443/index.html
Issues
Logging
You will probably want to change the root logging level from DEBUG
  to INFO
  in idp-conf/src/test/resources/logback-test.xml
Â
Why is Jetty 9.4 different than 9.3 ?
Running the IdP testbed in Eclipse with Jetty version 9.4 requires classpath changes.
I believe this is because :
The code that was changed in 9.4, is that we no long look to load classes/resources from the same classloader that loader jetty. That was really just encouraged code to not properly set the thread context classloader.
For this method to work for you, then the class you are looking for needs to either be on the system classpath or visible to a Classloader that is set as the current thread context classloader. If executed from within a webapp, you will have a classloader that is able to see WEB-INF classes, but jetty and some system classes are hidden from it.
This is a deliberate change, which I think is the correct way to go. However, we are open to understand your use-case of why we may need to search a bit harder for classes, so please describe your classloader setup and classpath.
Example Eclipse Launcher
To create an Eclipse Launcher manually :
Right-click on Main.java > Run As > Java Application
Â
Eclipse Launcher program arguments :
Program Arguments
Eclipse Launcher working directory :
Working Directory
Example Eclipse Launcher :