Taking a look at your code ... It appears that you have existing connections, presumable established earlier, outside of Jetty, in a Terracotta specific component (that I cannot locate).
Occasionally(?) a request on that established connection arrives which isn't handled by Terracotta, but is actually a HTTP (style? actual?) request that needs to be handed off to Jetty to process. Is that right? Joakim Erdfelt / [email protected] On Mon, Mar 19, 2018 at 7:13 PM, Anthony Dahanne <[email protected]> wrote: > Hey there, > Thanks for your answer ! > > Welcome to the new world of connectors and web protocols! :-) >> > > Yay ! :-) > > >> *Is this the same Terracotta that used to be open source?* >> > Yes it is ! And it still is actually ! > 4.x line : http://svn.terracotta.org/svn/tc/dso/trunk/ > 10.x line : https://github.com/Terracotta-OSS/terracotta-core , not using > jetty anymore though :-( > > *If so, where is the code that implements your old TerracottaConnector?* >> > > There it is : http://svn.terracotta.org/svn/tc/dso/trunk/deploy/src/main/ > java/com/tc/server/TerracottaConnector.java > > I'll try your advice out, and keep you updated ! > Thanks for your explanations ! > Anthony > > > > On Mon, Mar 19, 2018 at 5:27 PM, Joakim Erdfelt <[email protected]> > wrote: > >> Welcome to the new world of connectors and web protocols! :-) >> >> *Is this the same Terracotta that used to be open source?* >> *If so, where is the code that implements your old TerracottaConnector?* >> >> Is that a java.net.Socket I see? >> It's important to point out that there are no traditional BIO facilities >> or support in Jetty 9. >> Jetty is 100% async/java.nio now. >> >> You'll first need to implement a java.nio endpoint suitable for Jetty. >> Ultimately it will be an implementation of org.eclipse.jetty.io.EndPoint. >> But seeing the Socket in your example code snippet, you'll probably want >> some basic networking support. >> So start with implementing a TerracottaEndPoint that extend >> org.eclipse.jetty.io.ChannelEndPoint >> >> This TerracottaEndPoint will be important regardless of the next steps. >> >> Basic implementation ... >> >> Then try simply extending ServerConnector and providing an implementation >> of >> protected ChannelEndPoint newEndPoint(SocketChannel channel, >> ManagedSelector selectSet, SelectionKey key) throws IOException >> that returns your TerracottaEndPoint instance. >> >> Alternate approach ... >> >> You might want a network that isn't quite a network connector. >> If so, you might want to use the code examples found in our UnixSocket >> support layer. >> Note: you'll still need the above mentioned TerracottaEndPoint. >> >> unix socket example code: https://github.com/eclipse/jet >> ty.project/tree/jetty-9.4.x/jetty-unixsocket/src/main/java >> /org/eclipse/jetty/unixsocket >> >> >> >> >> Joakim Erdfelt / [email protected] >> >> On Mon, Mar 19, 2018 at 3:46 PM, Anthony Dahanne < >> [email protected]> wrote: >> >>> Hello Jetty experts, >>> First, I apologize if it's not the appropriate mailing list for this >>> question (I was hesitating with jetty-dev) , but there is my question : >>> what's the preferred path to migrate a custom connector from 8.1 to 9.4 ? >>> Here's what I used to do : a cusotm connector that could understand >>> HTTP, TC protocol, and SSL >>> >>> TCServerImpl.this.terracottaConnector = new >>> TerracottaConnector(TCServerImpl.this.configurationSetupManager.getSecurity() >>> != null); >>> TCServerImpl.this.terracottaConnector.setName(CONNECTOR_NAME_TERRACOTTA); >>> >>> >>> ---- >>> >>> public class TerracottaConnector extends SocketConnector { >>> private final boolean secure; >>> private boolean shutdown = false; >>> >>> public TerracottaConnector(boolean secure) { >>> this.secure = secure; >>> } >>> >>> public void handleSocketFromDSO(Socket s, byte[] data) throws IOException >>> { >>> ConnectorEndPoint connection = new ConnectorEndPoint(new >>> SocketWrapper(s, data)); >>> connection.dispatch(); >>> } >>> >>> etc. >>> } >>> ---- >>> >>> I've read the new architecture document : https://www.eclipse.org/jett >>> y/documentation/9.4.x/architecture.html but I'm still hitting my head >>> on what to use, and if there were examples that are doing what I used to do >>> (even if it's pretty clear from the architecture document that this use >>> case is definitely supported) >>> >>> I've tried extending the ServerConnector instead, but doing so , I could >>> not find the right API to handle a raw socket and raw bytes (Handlers are >>> are about HTTPRequest, so I guess I should stick to the ServerConnector...) >>> Anyway, if you have examples with custom ServerConnector, I'd be very >>> thankful if you could point them out ! >>> Thanks in advance ! >>> Anthony >>> >>> _______________________________________________ >>> jetty-users mailing list >>> [email protected] >>> To change your delivery options, retrieve your password, or unsubscribe >>> from this list, visit >>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>> >> >> >> _______________________________________________ >> jetty-users mailing list >> [email protected] >> To change your delivery options, retrieve your password, or unsubscribe >> from this list, visit >> https://dev.eclipse.org/mailman/listinfo/jetty-users >> > > > _______________________________________________ > jetty-users mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://dev.eclipse.org/mailman/listinfo/jetty-users >
_______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/jetty-users
