W jaki sposób można przeanalizować adres URL JDBC (Oracle lub sqlserver), aby uzyskać nazwę hosta, port i nazwę bazy danych. Formaty adresu URL są różne.Jak analizować adres URL JDBC, aby uzyskać nazwę hosta, port itp.?
Odpowiedz
zacząć od czegoś takiego:
String url = "jdbc:derby://localhost:1527/netld;collation=TERRITORY_BASED:PRIMARY"; String cleanURI = url.substring(5); URI uri = URI.create(cleanURI); System.out.println(uri.getScheme()); System.out.println(uri.getHost()); System.out.println(uri.getPort()); System.out.println(uri.getPath());
Wyjście z powyższego:
derby localhost 1527 /netld;collation=TERRITORY_BASED:PRIMARY
thanks bardzo łatwo mogę uzyskać host, port łatwo w ten sposób, ale muszę przeanalizować ścieżkę, aby uzyskać nazwę bazy danych –
Tak, na pewno. – brettw
nie będzie można parsować _some server_ z jdbc: oracle: thin: @ some.server: 1521: XXX z tym –
To nie dla mnie. Wymyśliłem te metody, oparte na założeniu, że nazwa hosta i port są zawsze połączone razem dwukropkiem. To założenie dotyczy wszystkich baz danych, z którymi mam do czynienia w pracy (Oracle, Vertica, MySQL itp.). Ale prawdopodobnie nie działa w przypadku czegoś, co nie dociera do portu sieciowego.
String url = null; // set elsewhere in the class
final public String regexForHostAndPort = "[.\\w]+:\\d+";
final public Pattern hostAndPortPattern = Pattern.compile(regexForHostAndPort);
public String getHostFromUrl() {
Matcher matcher = hostAndPortPattern.matcher(url);
matcher.find();
int start = matcher.start();
int end = matcher.end();
if(start >= 0 && end >= 0) {
String hostAndPort = url.substring(start, end);
String [] array = hostAndPort.split(":");
if(array.length >= 2)
return array[0];
}
throw new IllegalArgumentException("couldn't find pattern '" + regexForHostAndPort + "' in '" + url + "'");
}
public int getPortFromUrl() {
Matcher matcher = hostAndPortPattern.matcher(url);
matcher.find();
int start = matcher.start();
int end = matcher.end();
if(start >= 0 && end >= 0) {
String hostAndPort = url.substring(start, end);
String [] array = hostAndPort.split(":");
if(array.length >= 2)
return Integer.parseInt(array[1]);
}
throw new IllegalArgumentException("couldn't find pattern '" + regexForHostAndPort + "' in '" + url + "'");
}
Używam tej klasy w moich projektach. Użycie jest naprawdę proste.
/**
* Split di una url JDBC nei componenti.
* Estrae i componenti di una uri JDBC del tipo: <br>
* String url = "jdbc:derby://localhost:1527/netld;collation=TERRITORY_BASED:PRIMARY"; <br>
* nelle rispettive variabili pubbliche.
* @author Nicola De Nisco
*/
public class JdbcUrlSplitter
{
public String driverName, host, port, database, params;
public JdbcUrlSplitter(String jdbcUrl)
{
int pos, pos1, pos2;
String connUri;
if(jdbcUrl == null || !jdbcUrl.startsWith("jdbc:")
|| (pos1 = jdbcUrl.indexOf(':', 5)) == -1)
throw new IllegalArgumentException("Invalid JDBC url.");
driverName = jdbcUrl.substring(5, pos1);
if((pos2 = jdbcUrl.indexOf(';', pos1)) == -1)
{
connUri = jdbcUrl.substring(pos1 + 1);
}
else
{
connUri = jdbcUrl.substring(pos1 + 1, pos2);
params = jdbcUrl.substring(pos2 + 1);
}
if(connUri.startsWith("//"))
{
if((pos = connUri.indexOf('/', 2)) != -1)
{
host = connUri.substring(2, pos);
database = connUri.substring(pos + 1);
if((pos = host.indexOf(':')) != -1)
{
port = host.substring(pos + 1);
host = host.substring(0, pos);
}
}
}
else
{
database = connUri;
}
}
}
- 1. Jak analizować adres URL, aby uzyskać adres URL bazy? - Szyny 3,1
- 2. Jak wygenerować adres URL bazy danych JDBC?
- 3. Przetwarzanie nazwę hosta i port ze sznurka lub url
- 4. Jak uzyskać bieżącą nazwę hosta w Heroku?
- 5. Jak mogę uzyskać bieżącą nazwę hosta i port podczas uruchamiania Capybara z Poltergeist?
- 6. Jak analizować adres URL Zend dla parametrów?
- 7. Jak uzyskać nazwę hosta z IP (Linux)?
- 8. Czy mogę zmapować nazwę hosta * i * port z/etc/hosts?
- 9. Seler AsyncResult uzyskać nazwę hosta
- 10. Jak analizować adres URL w YouTube przy użyciu XSLT?
- 11. Podaj adres URL jdbc: wbudowana baza danych
- 12. Jak uzyskać nazwę hosta w szablonie freemarker?
- 13. Jak uzyskać pełny adres url
- 14. Jak uzyskać aktualny adres URL
- 15. Jak uzyskać adres URL żądania?
- 16. Analizować adres URL w języku Ruby, aby uzyskać subdomenę lub domenę główną bez "www"?
- 17. Ogórek/Kapibara - jak uzyskać hosta i port bieżącej realizacji
- 18. Uzyskaj adres URL i nazwę kategorii Magento
- 19. Umbraco, jak używać identyfikatora właściwości obrazu, aby uzyskać adres URL
- 20. Jak uzyskać hosta i port w aplikacji Railsy?
- 21. Jak uzyskać długi adres URL z krótkiego adresu URL?
- 22. jak analizować na nazwę obrazu z URL obrazu
- 23. Jak uzyskać adres URL zdalnego repozytorium svn?
- 24. Jak ustawić nazwę aplikacji w adresie URL JDBC Postgresql?
- 25. Symfony2: jak ustawić adres URL hosta/bazy w skryptach CLI
- 26. Jak uzyskać adres URL w http.Request
- 27. Jak uzyskać docelowy adres URL zdarzenia onbeforeunload?
- 28. Jak uzyskać adres URL bazy bez uzyskiwania dostępu do żądania
- 29. Jak skonfigurować funkcję Logback, aby dodać nazwę hosta/adres IP do każdego zdarzenia dziennika?
- 30. Django serializuje obraz, aby uzyskać pełny adres URL:
Co to znaczy, że chcesz przeanalizować adres URL jdbc. Możesz użyć wyrażenia regularnego. Czy możesz podać przykład: – Ank
jdbc: jtds: sqlserver: // nazwa hosta: port/dbname lub jdbc: jtds: sqlserver: // nazwa hosta: port; databaseName = dbname lub jdbc: oracle: thin: @hostname: port: dbname –