我正在使用ejb multimodule應用程序。我正在使用Wildfly 8.1.0.Final。和GeoIp。帶有限定符的GeoIpController類型的不滿意的依賴關係@Default在注入點[BackedAnnotatedField]
我在部署時在物理服務器上遇到麻煩。該程序正在使用netbeans,但不在我的服務器上。我做錯了什麼。這是我在JBoss管理中使用物理服務器的過程。 geoip的文件和路線:
/home/javier/Servers/wildfly-8.1.0.Final/modules/system/layers/base/com/maxmind/db/maxmind-db/1.0.0maxmind-db-1.0.0.jar
/home/javier/Servers/wildfly-8.1.0.Final/modules/system/layers/base/com/maxmind/geoip2/geoip2/2.1.0geoip2-2.1.0.jar
1º我部署我的類(pojos,interfaces ...)文件。
2º我部署了我的ejb(程序的邏輯)文件。
3º我部署了戰爭文件(網絡組件),但此刻我有麻煩。我無法部署此文件。
這是錯誤的,我做錯了什麼:
17:58:45,313 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."SertuxSearchIt-web-1.0-SNAPSHOT.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."SertuxSearchIt-web-1.0-SNAPSHOT.war".WeldStartService: Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_111]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_111]
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 3 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp
at com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp(HeaderAddContentController.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp
at com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp(MenuAddContentController.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type AppScoped with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.filter.SearchFilter.appScoped
at com.sertux.searchit.jsf.filter.SearchFilter.appScoped(SearchFilter.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.util.AppScoped is on the classpath, but was ignored because a class it references was not found: com.sertux.searchit.api.domain.type.EditionType from [Module "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.weld.bootstrap.ConcurrentValidator.validateBeans(ConcurrentValidator.java:76)
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:475)
at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:392)
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:85)
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:93)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
... 3 more
17:58:45,320 ERROR [org.jboss.as.controller.management-operation] (XNIO-1 task-2) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "SertuxSearchIt-web-1.0-SNAPSHOT.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService: Failed to start service
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 3 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp
at com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp(HeaderAddContentController.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp
at com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp(MenuAddContentController.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type AppScoped with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.filter.SearchFilter.appScoped
at com.sertux.searchit.jsf.filter.SearchFilter.appScoped(SearchFilter.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.util.AppScoped is on the classpath, but was ignored because a class it references was not found: com.sertux.searchit.api.domain.type.EditionType from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
"}}
17:58:45,325 ERROR [org.jboss.as.server] (XNIO-1 task-2) JBAS015870: Deploy of deployment "SertuxSearchIt-web-1.0-SNAPSHOT.war" was rolled back with the following failure message:
{"JBAS014671: Failed services" => {"jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService: Failed to start service
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 3 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp
at com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp(HeaderAddContentController.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException:WELD-001408:不滿意的依賴與於注射點預選賽@default 型GeoIpController [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp at com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp(MenuAddContentController.java:0) WELD-001474: com.sertux.searchit.jsf.controller.geoip.GeoIpController類位於類路徑中,但被忽略,因爲它引用的類es找不到:來自[Module \「deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main \」來自Service Module Loader]的com.maxmind.geoip2.DatabaseReader。
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type AppScoped with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.filter.SearchFilter.appScoped
at com.sertux.searchit.jsf.filter.SearchFilter.appScoped(SearchFilter.java:0)
WELD-001474: Class com.sertux.searchit.jsf.controller.util.AppScoped is on the classpath, but was ignored because a class it references was not found: com.sertux.searchit.api.domain.type.EditionType from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader].
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
"}}
類:
package com.sertux.searchit.jsf.controller.addcontent;
import com.sertux.searchit.api.shiro.ShiroSecured;
import com.sertux.searchit.jsf.controller.geoip.GeoIpController;
import java.io.Serializable;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.LoggerFactory;
@Named
@ViewScoped
@ShiroSecured
public class HeaderAddContentController implements Serializable {
private static final org.slf4j.Logger log = LoggerFactory.getLogger(HeaderAddContentController.class);
private static final String KEY_SERVICE_NULL_OR_EMPTY_LOGIN_NAME_EXCEPTION = "View_global_SERVICE_NULL_OR_EMPTY_LOGIN_NAME_EXCEPTION";
private static final String KEY_SERVICE_UNKNOWN_USER_WITH_LOGIN_NAME_EXCEPTION = "View_global_SERVICE_UNKNOWN_USER_WITH_LOGIN_NAME_EXCEPTION";
@Inject
private GeoIpController geoIp;
public HeaderAddContentController() {
}
public GeoIpController getGeoIp() {
return geoIp;
}
public void setGeoIp(GeoIpController geoIp) {
this.geoIp = geoIp;
}
}
GeoIpController:
package com.sertux.searchit.jsf.controller.geoip;
import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.exception.GeoIp2Exception;
import com.maxmind.geoip2.model.CityResponse;
import com.maxmind.geoip2.record.City;
import com.maxmind.geoip2.record.Country;
import com.maxmind.geoip2.record.Location;
import com.maxmind.geoip2.record.Postal;
import com.maxmind.geoip2.record.Subdivision;
import com.sertux.searchit.api.domain.util.LocationIpSertux;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import org.slf4j.LoggerFactory;
@Named
@ApplicationScoped
public class GeoIpController {
private static final org.slf4j.Logger log = LoggerFactory.getLogger(GeoIpController.class);
private static final String PATH_GEOIP_DATABASE = "/usr/share/GeoIP/GeoLite2-City.mmdb";
private static DatabaseReader reader;
public GeoIpController() {
log.info(String.format("Loading GeoIpController file: %s", PATH_GEOIP_DATABASE));
try {
// A File object pointing to your GeoIP2 or GeoLite2 database
File database = new File(PATH_GEOIP_DATABASE);
// This creates the DatabaseReader object, which should be reused across
// lookups.
reader = new DatabaseReader.Builder(database).build();
log.info(String.format("Loaded GeoIpController file successfully: %s", PATH_GEOIP_DATABASE));
} catch (IOException ex) {
log.error("Error loading GeoIpController", ex);
}
}
/**
* latitude longitude locationText locationAccuracy countryIsoCode
* countryName mostSpecificSubdivisionIsoCode mostSpecificSubdivisionName
* cityName postalCode
*
* @param ip ip address
*
*/
public LocationIpSertux getCoords(String ip) {
try {
InetAddress ipAddress = InetAddress.getByName(ip);
CityResponse response = reader.city(ipAddress);
Country country = response.getCountry();
Subdivision subdivision = response.getMostSpecificSubdivision();
City city = response.getCity();
Postal postal = response.getPostal();
Location location = response.getLocation();
return new LocationIpSertux(
String.format("%s_%s_%s_%s_%s_%s_%s_%s_%s",
country.getIsoCode(), country.getName(),
subdivision.getName(), subdivision.getIsoCode(),
city.getName(),
postal.getCode(),
location.getLatitude(),
location.getLongitude(),
location.getAccuracyRadius()),
location.getLatitude(),
location.getLongitude(),
location.getAccuracyRadius() == null ? 0 : location.getAccuracyRadius(),
country.getIsoCode(),
country.getName(),
subdivision.getIsoCode(),
subdivision.getName(),
city.getName(),
postal.getCode());
} catch (UnknownHostException ex) {
// log.error("UnknownHostException:", ex);
} catch (IOException ex) {
// log.error("IOException:", ex);
} catch (GeoIp2Exception ex) {
// log.error("GeoIp2Exception:", ex);
}
return null;
}
public DatabaseReader getReader() {
return reader;
}
public void setReader(DatabaseReader reader) {
this.reader = reader;
}
}
GeoIpController是war類文件的java類。位於Web包中。 Geoip是一個依賴項。 com.maxmind.geoip2 geoip2 2.1.0 –
xav56883728
綜觀棧跟蹤,一些消息是相關的:'WELD-001474:類com.sertux.searchit.jsf.controller.geoip .GeoIpController位於類路徑中,但由於未找到它引用的類而被忽略:來自Service Module Loader的[Module \「deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main \」中的com.maxmind.geoip2.DatabaseReader ]。'位於'DatabaseReader'的位置? – Rouliboy
是的,但我該如何解決這個麻煩?一些想法? – xav56883728