Conduit - miliony pytań bez odpowiedzi

0

Nie mogę sczaić tych cholernych xmli

co to za konstrukcja?
co to jest {http://example.com/}? a co to jest HelloWorldServicePort.http-conduit?
a to xmlns="http://cxf.apache.org/transports/http/configuration"> na co tu jest?

I jak to ma działać?
Jak strzelę do http://example.com/ to on doda weryfikacje użytkownika?
Czy może on strzeli do mojego endpointa przez ten http://example.com/ i gdzie wtedy doda weryfikacje użytkownika czy może jak strzelę do swojego to on strzeli do http://example.com/ ?

<conduit name="{http://example.com/}HelloWorldServicePort.http-conduit"
  xmlns:sec="http://cxf.apache.org/configuration/security"
  xmlns="http://cxf.apache.org/transports/http/configuration">
  <authorization>
     <sec:UserName>myuser</sec:UserName>
     <sec:Password>mypasswd</sec:Password>
     <sec:AuthorizationType>Basic</sec:AuthorizationType>
  </authorization>
</conduit>
1

Dostałeś bana na dokumentacje CXF?

0

nic nie czaję z tego, poza tym to jest napisane w cały świat, błędy, literówki i nieaktywne linki.

0

title

2

Nie wiem jak rozumieć Twoje pytanie.

<conduit name="{http://example.com/}HelloWorldServicePort.http-conduit"
  xmlns:sec="http://cxf.apache.org/configuration/security"
  xmlns="http://cxf.apache.org/transports/http/configuration">4

xmlns <- definiuje schemę dla domyślnej przestrzeni nazw
xmln:sec <- definiuje schemą dla przestrzeni nazw "sec"

Z linków do schematów można wywnioskować, że przestrzeń:

  • sec dotyczy konfiguracji security
  • domyślna dotyczy konfiguracji transportu HTTP ;P

<conduit> <- należy szukać w schemie http://cxf.apache.org/transports/http/configuration
<sec:costam <- należy szukać w schemie http://cxf.apache.org/configuration/security

Jak wpiszesz w przeglądarce tu URLe, to otworzy Ci się definicja schematów. Często tam jest dokumentacja zawarta w odpowiednich tagach:

<xs:documentation>
This structure holds parameters that may govern authentication that use a User Password strategy.
</xs:documentation>

Jak czytać schemę? Trzeba zapoznać się ze schemą do XSD :)

Można podejść bardziej lewnieie i użyć InteliJ, które to ide pozwala dociągać XSD z internetów, a po użyciu ctrl + <klik na tagu> ide przenosi do definicji taga. Masz też autocomplete w oparciu o schemę.

Jak używać CXF? Osobna historia.

0
yarel napisał(a):

Nie wiem jak rozumieć Twoje pytanie.

Jak używać CXF? Osobna historia.

O właśnie chodzi mi o to jak to używać.
Znajduję przykład jak zrobić weryfikacje użytkownika conduitem i co ja mam z tym zrobić? Jak tego użyć? Są tylko wyrywkowe przykłady, a jak to wkomponować w cały context.xml to sobie zgaduj. Jest też tam jakiś klient, który odwóluje się do serwisu. A co w serwisie? Nie napisali. A jak wywolac klienta, w tych Xmlach? nie wiadomo.

Przykład:

<conduit name="{http://example.com/}HelloWorldServicePort.http-conduit"
  xmlns:sec="http://cxf.apache.org/configuration/security"
  xmlns="http://cxf.apache.org/transports/http/configuration">
  <proxyAuthorization>
     <sec:UserName>myuser</sec:UserName>
     <sec:Password>mypasswd</sec:Password>
  </proxyAuthorization>
  <client AllowChunking="false" ProxyServer="localhost" ProxyServerPort="8080" />
</conduit>

https://cxf.apache.org/docs/client-http-transport-including-ssl-support.html

I co to ma niby robić?
Spróbowałem coś takiego wsadzić do camel contexta to na localhost:8080 dostaje connection refused.

Próbowałem też dodać WS-SEC do endpointów i dostaje komunikaty, że brak WS-Addressing. Dodaję je tak jak napisano, a i tak się gubią. W ogóle dla mnie to jest wszystko mega porypane skąd ja mam wiedzieć co gdzie wpisać, te xmle to są gorzej niż słabo typowane. Te metody xmlowe nie wiadomo jak sie przenikaja w ogole, gdzie jest wejscie a gdzie wyjscie i ktory kogo wywoluje. Kompilator tez nie podpowie, dopiero jak zbuduje cały projekt i zdeplojuje na konterzenerze i puszcze requesta przez SOAPUI to dostaję komunikaty.

0
Julian_ napisał(a):
yarel napisał(a):

Nie wiem jak rozumieć Twoje pytanie.

Jak używać CXF? Osobna historia.

O właśnie chodzi mi o to jak to używać.
Znajduję przykład jak zrobić weryfikacje użytkownika conduitem i co ja mam z tym zrobić? Jak tego użyć? Są tylko wyrywkowe przykłady, a jak to wkomponować w cały context.xml to sobie zgaduj. Jest też tam jakiś klient, który odwóluje się do serwisu. A co w serwisie? Nie napisali. A jak wywolac klienta, w tych Xmlach? nie wiadomo.

Przykład:

<conduit name="{http://example.com/}HelloWorldServicePort.http-conduit"
  xmlns:sec="http://cxf.apache.org/configuration/security"
  xmlns="http://cxf.apache.org/transports/http/configuration">
  <proxyAuthorization>
     <sec:UserName>myuser</sec:UserName>
     <sec:Password>mypasswd</sec:Password>
  </proxyAuthorization>
  <client AllowChunking="false" ProxyServer="localhost" ProxyServerPort="8080" />
</conduit>

Mogę się mylić, ale skoro konfigurujesz transport HTTP dla klienta oraz security dla tego transportu, to powyższe może oznaczać tyle, że pchasz requesty przez proxy, wskazujesz przez jakie proxy i jakiego usera/hasła w proxy należy użyć. Masz takie proxy na 8080 i ono oczekuje autoryzacji i przerzuca request do serwisu?

0

czyli gdy strzelę w jakikolwiek endpoint? zawarty w context.xml, gdzie jest taki conduit to request będzie przechodził przez 127.0.0.1:8080?
a tutaj

<conduit name="{http://example.com/}HelloWorldServicePort.http-conduit"
  xmlns:sec="http://cxf.apache.org/configuration/security"
  xmlns="http://cxf.apache.org/transports/http/configuration">
  <authorization>
     <sec:UserName>myuser</sec:UserName>
     <sec:Password>mypasswd</sec:Password>
     <sec:AuthorizationType>Basic</sec:AuthorizationType>
  </authorization>
</conduit>

to jakikolwiek endpoint? zawarty w context.xml, gdzie jest taki conduit to request będzie przechodził z dodaną autentykacją?

1

Nie jakikolwiek endpoint, ale taki, który skonfigurowałeś. Z dokumentacji CXF:

The first thing to notice is the "name" attribute on http:conduit. This allows CXF to associate this HTTP Conduit configuration with a particular WSDL Port. The name includes the service's namespace, the WSDL port name (as found in the wsdl:service section of the WSDL), and ".http-conduit". It follows this template: "{WSDL Namespace}portName.http-conduit". Note: it's the PORT name, not the service name. Thus, it's likely something like "MyServicePort", not "MyService". If you are having trouble getting the template to work, another (temporary) option for the name value is simply "*.http-conduit"

Ustaw name="*.http-conduit" i masz dla wszystkich. Jak poczytasz dokumentację, to pewnie napotkasz takie kocnepty jak conduictSelector i zauważysz, że można zdefiniować różne beany reprezentujące klientów różnych endpointów, a każdy z nich może mieć własny conduictSelector i możesz zdefiniować wiele "conduit" (bo to są po prostu beany...) z różnymi konfiguracjami.

Dokumentacja Twoim przyjacielem i przykładowe rozwiązania też Twoim przyjacielem: https://cxf.apache.org/docs/sample-projects.html

Tak na marginesie:

  • security, które ustawiasz jest ustawieniem na poziomie transportu, a nie protokołu aplikacyjnego (np. dla SOAPa możesz mieć np. podpis cyfrowy, czy szyfrowanie).
  • mam wrażenie, ze zaczynasz zabawę CXF od przerabiania przykładów, wg mnie właściwa droga, to najpierw dokumentacja, zrozumienie architektury (koncepty, klocki, z których możesz złożyć swoje rozwiązanie), a dopiero później konkretne przykłady
0
yarel napisał(a):

Nie jakikolwiek endpoint, ale taki, który skonfigurowałeś. Z dokumentacji CXF:
przykładowe rozwiązania też Twoim przyjacielem: https://cxf.apache.org/docs/sample-projects.html

ech, tam mieszają kod javowy z xml, a my robimy prawie tylko na xml :( Nie czaję też co oni z tymi serwerami i klientami tam wyprawiają... jak chcę wysyłać requesty do endpointa to z jakiej racji mam pisać implementację serwera tego endpointa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1