Giter VIP home page Giter VIP logo

openssp's Introduction

OpenSSP by ATG

This is a Open-Source Supply-Side-Platform for general use.

This platform is also called a multi-channel-SSP which means that not only RTB is supported, also channels to a adserver and other SSP can be implemented. The RTB Support is native implemented and need no extra definition.

This SSP is optimized for working and handle VideoAd-Impressions. Therefore there a objects with those characteristics. But it can also be used for any other type of impressions such as banner etc. Feel free to examine the code and adapt the behavior as you need.

Full support of the OpenRTB standard up to version 2.4. If a field or object from the protocol is missing, just add it.

There are some properties configuration files to configure some small, things to the SSP like URL, Credentials etc. The Runtime Environment is based on a Tomcat. The proprties files will be loaded at TC startup and a Watchdog is watching those files for changes. So the (most) values of this configurations are runtime sensitive.

Those file are:

  • global.runtime.xml
  • local.runtime.xml

Elementary SSP functionality:

  • A tag with a link to this SSP is placed on a website which contains the (Video-)Adplacement. This link contains a set of parameters (depends on your preferences).
  • SSP is called from this tag, the parameters are extrahated and validated (depends on your preferences).
  • The SSP resolves the request data, e.g. the website or publisher, which is identified by an id (depends on your preferences) and loads the data to enrich from the cache. (For more information about the cache see section Data Caching)
  • The SSP starts the ExchangeServer and the ExecutorService to call the demand service like DSP, SSP, Adserver or what ever you want and waits for the respond from the partner to start the auction.
  • After the auction is finished, the winner is evaluated and a respond to the client can be prepared.

Data Caching:

This OpenSSP uses some predefined data to enrich the incoming requests and building the various bidrequests. Those data e.g. for Websites have to be loaded in a asynchronous and continous way. The data will be loaded via a restful service normally cause of to call a database in realtime is not performantly possible, therefore this SSP loads in a periodically manner the data from a webservice and stores those data in a memory based key-value store, called the cache.

Update v0.2: to increase the user experience and avoid a test implementation for set up an external data service to load the data from, some new example JSON based datastructures and its corresponding DataBroker are available. These structures can be extended to load the data to fill a valid and complete bidrequest. Additionally the payload of SSP request is reduced to only one parameter. Example: a call to OpenSSP with ?site=1 will map to an entry within site_db.json and loads its data from cache.

You can use it, improve it or do whatever you want with it.

Comments, proposals and improvements are welcome.
For more informations contact André Schmer, [email protected].
October 2017

openssp's People

Contributors

brianksorensen avatar danishcaptain avatar dependabot[bot] avatar jcjnyc avatar schmermeister avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openssp's Issues

AbstractConfigurationLoader null

Unfortunately I get an exception on startup:

ERROR: AbstractConfigurationLoader null
Javax.xml.bind.PropertyException

At util.properties.ProjectProperty.readFile(ProjectProperty.java:106)

In the docs you mention about some configuration url that need to be done, but a little debugging shows that the filename is config.xml which looks like

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<!-- this is non dynamic loadable configuartion file -->
<!-- values in here will only be loaded during tomcat startup -->
<!-- changes need tomcat restart to effect-->
<properties>
	<!-- switch to enable/disable metrics support -->
	<entry key="metrics">false</entry>
</properties>

And is totally valid.

Do you have any idea what the issue might be here. Feel free to answer in German as I am Berlin based.

Best regards and thanks for your help.
Roman

Maven packages missing

Hi team,
After cloning the repo, while installing open-ssp using maven, got below errors, any help is apprectiated.
kiran@open-ssp:/openssp/open-ssp-parent$ mvn install
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project open-ssp-utilities: Compilation failure: Compilation failure:
[ERROR] /home/kiran/openssp/open-ssp-parent/open-ssp-utilities/src/main/java/util/properties/ProjectProperty.java:[13,22] package javax.xml.bind does not exist
kiran@open-ssp:
/openssp/dsp-sim$ mvn install
ERROR] Failed to execute goal on project open-ssp-dsp-sim: Could not resolve dependencies for project com.atg.openssp:open-ssp-dsp-sim:jar:0.1: Failure to find com.atg.openssp:open-ssp-common:jar:0.3 in https://repo.maven.apache.org/maven2 was c
ached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
kiran@open-ssp:/openssp/data-sim-client$ mvn install
[ERROR] Failed to execute goal on project open-ssp-dsp-sim-client: Could not resolve dependencies for project com.atg.openssp:open-ssp-dsp-sim-client:jar:0.1: Failure to find com.atg.openssp:open-ssp-common:jar:0.3 in https://repo.maven.apache.or
g/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1
kiran@open-ssp:
/openssp/data-services$ mvn install
[ERROR] Failed to execute goal on project open-ssp-data-services: Could not resolve dependencies for project com.atg.openssp:open-ssp-data-services:war:0.1: The following artifacts could not be resolved: com.atg.openssp:open-ssp-common:jar:0.3, c
om.atg.openssp:core:jar:0.3, com.atg.openssp:open-ssp-openrtb:jar:0.3: Failure to find com.atg.openssp:open-ssp-common:jar:0.3 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until th
e update interval of central has elapsed or updates are forced -> [Help 1]

BUILD FAILURE

Probably version 0.2 requires some dependencies from maven repository, but the repo not exists.

[ERROR] Failed to execute goal on project open-ssp-data-services: Could not resolve dependencies for project com.atg.openssp:open-ssp-data-services:war:0.1: The following artifacts could not be resolved: com.atg.openssp:open-ssp-common:jar:0.3, com.atg.openssp:core:jar:0.3, com.atg.openssp:open-ssp-openrtb:jar:0.3: Could not find artifact com.atg.openssp:open-ssp-common:jar:0.3 in central (https://repo.maven.apache.org/maven2) -> [Help 1]

HTTP Status - 404 error

After following the instructions in "Get Started", I hit localhost:8080/open-ssp and it shows: HTTP Status 404 - /open-ssp/.
Steps I followed -

  1. Maven imported the whole project in Eclipse IDE

  2. Run the open-ssp-parent (Run as install)
    It also gives an error -


T E S T S

2018-01-24 19:01:41,743 main ERROR Unable to locate appender "DebugFile" for logger config "root"

Ignored it, as it was logger error and also build was successful.

  1. After that, run the open-ssp.war as per instructions.

Can you tell me where I went wrong and help in fixing it?

Issue while run the openssp project

Hi,

Good day to you!. I have successfully imported the openssp project into my eclipse workspace and deployed the core and dataservices war into tomcat server.

I have few doubts to run. First one, I have seen the two wars with two different port in pom.xml. Can we need to run the war one by one seperately with corresponing port(core - 8080 and dataservices-9090)??.

Then I have tried to run both (core and dataservice) on 8080 , but i got a below error.

`Caused by: java.lang.NoClassDefFoundError: com/atg/openssp/core/system/loader/AbstractConfigurationLoader
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
at java.lang.Class.getDeclaredFields(Class.java:1916)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:256)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:132)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:335)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:782)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:306)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5202)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
... 6 more
Caused by: java.lang.ClassNotFoundException: com.atg.openssp.core.system.loader.AbstractConfigurationLoader
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
... 20 more
Apr 23, 2020 12:42:14 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
WARNING: The web application [open-ssp] appears to have started a thread named [Log4j2-Log4j2Scheduled-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)
2020-04-23 12:42:14,701 pool-1-thread-1 ERROR Caught exception executing shutdown hook null java.lang.NoClassDefFoundError: java/util/concurrent/ScheduledFuture
at org.apache.logging.log4j.core.util.WatchManager.stop(WatchManager.java:73)
at org.apache.logging.log4j.core.config.AbstractConfiguration.stop(AbstractConfiguration.java:354)
at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:311)
at org.apache.logging.log4j.core.LoggerContext$1.run(LoggerContext.java:265)
at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry$RegisteredCancellable.run(DefaultShutdownCallbackRegistry.java:102)
at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCallbackRegistry.java:72)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: Illegal access: this web application instance has been stopped already. Could not load [java.util.concurrent.ScheduledFuture]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1342)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1205)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
... 7 more
Caused by: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [java.util.concurrent.ScheduledFuture]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1352)
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1340)
... 9 more

`
Kindly give me instructions to resolve this issue ASAP ?.. I am awaiting for your response.

Thanks,
Keerthi.

Dockerfile

It would be useful if there was a dockerfile to get an example up and running from source. I find the docs are not very clear in describing all the steps or providing example configurations. A dockerfile would make it explicit.

incubator branch request

I have a major submission, and I would prefer not putting it into the master branch. Would you be willing to create an incubator-freestar (or a release candidate branch) branch that I can use, and we can collaborate on, and later merge into master when it is ready?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.